C# 将多个参数传递给控制器操作

C# 将多个参数传递给控制器操作,c#,asp.net-core,routes,C#,Asp.net Core,Routes,要访问资源,我必须传递两个ID,因为两个ID构建密钥 @Html.ActionLink("Details", "Details", new { id = item.CallerId, customerId = item.CustomerId }) 我在控制器操作中获得了带有以下签名的nulls: public async Task<IActionResult> Details(int? id, int? customerId) 公共异步任务详细信息(int?id,int?cust

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

@Html.ActionLink("Details", "Details", new { id = item.CallerId, customerId = item.CustomerId })
我在控制器操作中获得了带有以下签名的
null
s:

public async Task<IActionResult> Details(int? id, int? customerId)
公共异步任务详细信息(int?id,int?customerId)

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

有多种方法可以实现这一点。其中一种方法是构建一个ViewModel来包含这两个ID。另一种方法是使用
HttpGetAttribute
指定路由:

[HttpGet("Details/{id}/{customerId}")]
public async Task<IActionResult> Details(int? id, int? customerId)
[HttpGet(“详细信息/{id}/{customerId}”)]
公共异步任务详细信息(int?id、int?customerId)

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

,您必须定义第二个id的源,可以来自header、query param或route param。 默认路由将路由定义为
/{controller}/{action}/{id}
,如您所见,它告诉MVC从路由获取id的位置

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


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

我不确定
.asp
的详细信息,但听起来您需要一个
结构
您能检查作为结果实际创建的链接吗
customerId
应该成为查询参数,它应该只起作用。。。发布结果url。