【问题标题】:Pass multiple parameters to the controller action将多个参数传递给控制器​​动作
【发布时间】:2018-01-06 19:52:53
【问题描述】:

要访问资源,我必须传递两个 id,因为两个 id 构建密钥。

@Html.ActionLink("Details", "Details", new { id = item.CallerId, customerId = item.CustomerId })

我在控制器操作中得到nulls,签名如下:

public async Task<IActionResult> Details(int? id, int? customerId)

我使用默认路由。我应该怎么做才能同时传递两个 id?

【问题讨论】:

  • 我不确定.asp 的详细信息,但听起来你需要struct
  • 您能检查一下实际创建的链接是什么吗? customerId 应该成为查询参数,它应该可以简单地工作...edit 发布结果 url。

标签: c# asp.net-core routes


【解决方案1】:

有多种方法可以完成这项工作。其中一种方法是构建一个 ViewModel 来包含这两个 Id。另一种方法是使用HttpGetAttribute 指定路由:

[HttpGet("Details/{id}/{customerId}")]
public async Task<IActionResult> Details(int? id, int? customerId)

这里,{id} 将映射到 id{customerId}customerId,前提是接收到的值为 int

【讨论】:

    【解决方案2】:

    您必须定义第二个 ID 的来源,可以来自标头、查询参数或路由参数。 默认路由将路由定义为/{controller}/{action}/{?id},如您所见,它告诉 MVC 从何处获取路由的 id。

    在您的情况下,我建议将两个 ID 作为查询参数发送。

    此链接可能有助于您了解如何将参数作为查询参数传递。

    【讨论】:

      猜你喜欢
      • 2010-11-10
      • 1970-01-01
      • 2020-11-30
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      相关资源
      最近更新 更多