在我的工作中,我必须解决一个URL重写问题。我必须使用的URL为模板:MVC4 Route as/{controler} - {id}而不是/ {controler}/{id}
{controller}/{action}-{id}
,而不是
{controller}/{action}/{id}
所以经加工后的URL应该是这样的:
myController/myAction-128
,其中128是参数
我路线图:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "NewRoute", // Route name
url: "{controller}/{action}-{id}/{extId}", // URL with parameters
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, extId = UrlParameter.Optional } // Parameter defaults
);
}
控制器代码:
[HttpGet]
public ActionResult DocumentDetails(int? id)
{
if (doc.HasValue)
{
...
}
}
这条路线不提供任何成功的结果。我仍然有404错误。当我使用/而不是“ - ”时,一切正常,但我的JS视图环境不起作用。
有什么我可以做的,以解决这个问题?所有的帮助将不胜感激,谢谢。
谢谢,这段代码有效。顺便说一句:是@“\ d +”路由中的数字的正则表达式? – 2013-03-24 14:48:31
是的,'\ d +'是一个匹配一个或多个数字的正则表达式。 – 2013-03-24 14:51:35