Asp.net mvc 在.NETMVC中如何将多个参数从视图传递到控制器

Asp.net mvc 在.NETMVC中如何将多个参数从视图传递到控制器,asp.net-mvc,Asp.net Mvc,我需要在click事件中将两个参数id和日期从视图传递到控制器端。这可能是一个基本问题,但我不能这样做 我尝试了简单的代码 Code <a href='/Abc/Details/id?=@website_id, date?=@date' class="" id="prev" >Prev</a> code 以及如何在控制器端获取这些参数 如果可能的话,我不想使用“Ajax”或JavaScript首先,您需要在routeconfig文件中创建自定义路由或通过添加以下代码行

我需要在click事件中将两个参数id和日期从视图传递到控制器端。这可能是一个基本问题,但我不能这样做

我尝试了简单的代码

Code <a href='/Abc/Details/id?=@website_id, date?=@date' class="" id="prev" >Prev</a>
code
以及如何在控制器端获取这些参数


如果可能的话,我不想使用“Ajax”或JavaScript

首先,您需要在routeconfig文件中创建自定义路由或通过添加以下代码行来启用mapmvcattributteroutes

routes.MapMvcAttributeRoutes();
然后在您的控制器中,在上面定义的操作中添加如下内容

[Route("/Abc/Details/{id}/{date}")]
[Route("/Abc/Details/{id?}/{date?}")]
public ActionResult Details(int id, string date)
如果你想让它为空的话

[Route("/Abc/Details/{id?}/{date?}")]
您的操作方法如下所示

[Route("/Abc/Details/{id}/{date}")]
[Route("/Abc/Details/{id?}/{date?}")]
public ActionResult Details(int id, string date)
使用@Html.ActionLink而不是硬编码链接

如果要使用自定义路线,请将其添加到默认路线上方

routes.MapRoute(
                "MyCustomRoute",
                "Archive/{entrydate}",
                new { Controller = "ABC", action = "Details",Id  = UrlParameter.Optional,Date =  UrlParameter.Optional});
现在在你看来

@Html.RouteLink("Link Text", "MyCustomRoute", new { Id = YourId, Date=YourDate})

我发现在控制器操作中声明变量更容易:

public IActionResult Create(string FirstName, string MiddleName, string    
LastName, string ADUsername, string ADId, string ADName, string ADemail)
{
    //do this
}
然后可以在视图中按名称分配变量:

<a asp-controller="Employees" asp-action="Create" asp-route-   
FirstName="@item.FirstName" asp-route-MiddleName="@item.MiddleName" asp-
route-LastName="@item.LastName" asp-route-ADUsername="@item.ADUsername" asp-
route-ADId="@item.ADId" asp-route-ADName="@item.ADName" asp-route-
ADemail="@item.ADemail">Add Employee</a>
添加员工

../Details?id=@website\u id&date=@date”
但是为什么不使用
@Html.ActionLink()
来正确生成这个呢?-
@Html.ActionLink(“Prev”,“Details”,“Abc”,new{id=“@website\u id”,date=“@date”},new{id=“Prev”})
@StephenMuecke:我试过了,但对我不起作用。你犯了一个错误,没有使用我展示的代码,或者你的代码中有其他错误。我没有收到你建议的控制器旁的任何参数。是的,也许你是对的,但对我不起作用。当你没有在参数中传递任何值时,我就是这么说的ers-只需将其硬编码为
@Html.ActionLink(“Prev”,“Details”,“Abc”,new{id=“1”,date=“2016-2-8”),new{id=“Prev”})即可查看其工作原理