C# 更改正在运行的参数的名称
我有一个关于路线图的项目(仅此而已): 我在控制器中有一个方法:C# 更改正在运行的参数的名称,c#,asp.net-mvc-4,asp.net-mvc-routing,C#,Asp.net Mvc 4,Asp.net Mvc Routing,我有一个关于路线图的项目(仅此而已): 我在控制器中有一个方法: public ViewResult List(int id = 1) { ... } 在List.cshtml中: @Html.ActionLink(i.ToString(), "List", "Product", new { id = i }, null) 但我想将id更改为page,但不想在RouteConfig.cs中更改它,我认为这是可以配置我的操作路线的一些属性。我想要这个解决方案: @Html.ActionLi
public ViewResult List(int id = 1)
{
...
}
在List.cshtml中:
@Html.ActionLink(i.ToString(), "List", "Product", new { id = i }, null)
但我想将id更改为page,但不想在RouteConfig.cs
中更改它,我认为这是可以配置我的操作路线的一些属性。我想要这个解决方案:
@Html.ActionLink(i.ToString(), "List", "Product", new { page = i }, null)
及
可以使用属性路由覆盖约定 首先确保已启用属性路由:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Product", action = "List", id = UrlParameter.Optional }
);
}
}
然后向控制器方法添加适当的属性,例如:
[Route("YourControllerName/List/{page?}")]
public ViewResult List(int page = 1)
{
...
}
问号使页面参数成为可选参数
如果是默认控制器和操作
[Route("")]
[Route("YourControllerName/List/{page?}")]
public ViewResult List(int page = 1)
{
...
}
有关属性路由的更多信息,请参见此处:
[Route("YourControllerName/List/{page?}")]
public ViewResult List(int page = 1)
{
...
}
[Route("")]
[Route("YourControllerName/List/{page?}")]
public ViewResult List(int page = 1)
{
...
}