我想从
重写网址http://localhost:51639/home/index?id=123
到
http://localhost:51639/home/product
这是我在Global.asax.cs
中的代码public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
我该怎么办?非常感谢
答案 0 :(得分:5)
重要的是订单,因为MVC首先搜索与RouteCollection的匹配并返回一个网址。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(null, "home/product/{id}", new {
controller = "Home", action = "Index",
id = UrlParameter.Optional}
);
routes.MapRoute("Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {
controller = "Home", action = "Index",
id = UrlParameter.Optional } // Parameter defaults
);
}
答案 1 :(得分:0)
如果您正在使用MVC 5,则可以使用自定义路由参数,即[Route("home/product/{id:int}")]
。它对于一条关闭路线非常有用,并且由于您可以在参数中指定类型,因此它不会与您可能需要的其他深层路线发生冲突。
http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx