我在MVC5中的默认路由之前定义了一个自定义路由,但由于某种原因它没有被命中。它达到默认路线。
我的路线定义如下:
routes.MapRoute(
name: "PDF Viewer",
url : "pdf/{id}",
defaults : new { controller = "PdfViewer", action = "Index", id = UrlParameter.Optional },
namespaces : new[] { "App.Web.Controllers" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults : new { controller = "Calendar", action = "Index", id = UrlParameter.Optional },
namespaces : new[] { "App.Web.Controllers" }
);
导航到/pdf/1
时,路线没有捕捉到它。 Route Debugger显示以下结果:
答案 0 :(得分:1)
从“PDF查看器”路线默认设置中删除id = UrlParameters.Optional
。
当id
是可选的时,框架会将请求视为含糊不清,因为它可以匹配Index()
和Index(int id)
。