我有一个需要 3 个参数的控制器
public ActionResult Directives(string MachineName, int ProjectId, int CompanyId)
现在 URL 看起来像这样。
/Project/Directives?projectId=41&MachineName=Apple%20Macbook%20Luft
但是我如何让它看起来像这样。
/Project/Directives/41/AppleMacbookAir/
我有一个需要 3 个参数的控制器
public ActionResult Directives(string MachineName, int ProjectId, int CompanyId)
现在 URL 看起来像这样。
/Project/Directives?projectId=41&MachineName=Apple%20Macbook%20Luft
但是我如何让它看起来像这样。
/Project/Directives/41/AppleMacbookAir/
尝试自定义路线:
routes.MapRoute(
"Project", // Route name
"{Controller}/{Action}/{projectId}/{machineName}/{companyId}",
new { controller = "Project", action = "Directives", projectId = 0, machineName = "", companyId = 0 } // Parameter defaults
);
http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-custom-routes-cs
您可以将 id 作为RedirectToAction()
方法的 routeValues 参数的一部分传递。
return RedirectToAction("Action", new { id = 99 });
这将导致重定向到Site/Controller/Action/99.
编辑:
要自定义 url,您必须创建custom route
为:
routes.MapRoute( "Project", // Route name
"{controller}/{Action}/{ProjectId}/{MachineName}/{CompanyId}",
new { controller = "Project",
action = "Directives",
ProjectId= 0,
MachineName= "",
CompanyId = 0
} // Parameter defaults );
UrlParameter.Optional
如果您想要任何参数可选,请使用。跟随 Stephen Walthe 关于ASP.NET MVC 路由的文章