【发布时间】:2017-07-12 20:49:05
【问题描述】:
我有一个带有路由配置规则的 ASP.Net MVC 应用程序,其中包括:
routes.MapRoute(
"rule1",
"{controller}/{action}/{cid}/{language}/{itemID}/{uid}",
new { controller = "Home", action = "action1" }
, new[] { "MVCApp.Controllers" }
);
我刚刚添加了具有相同数量参数的新操作,并且我的路由配置更改如下(添加了规则 2):
routes.MapRoute(
"rule2",
"{controller}/{action}/{cid}/{language}/{phoneNumber}/{uid}",
new { controller = "Home", action = "action2" }
, new[] { "MVCApp.Controllers" }
);
routes.MapRoute(
"rule1",
"{controller}/{action}/{cid}/{language}/{itemID}/{uid}",
new { controller = "Home", action = "action1" }
, new[] { "MVCApp.Controllers" }
);
现在当我调用http://localhost:51650/Home/action2/1/en/1/1 时,它不会路由到action1 并抛出异常The parameters dictionary contains a null entry for parameter 'itemID' of non-nullable type 'System.Int64' for method 'System.Web.Mvc.JsonResult action1(System.String, Int32, Int64, Int64)。
【问题讨论】:
-
倒序。添加路由的顺序会影响路由的工作方式。添加第一个规则1,然后添加规则2
-
@NicoRiff 我刚刚更新了异常详细信息。有什么方法可以使信息不路由到 rule2 并且路由会跳过它并执行 rule1(对于 url
http://localhost:51650/Home/action2/1/en/1/1)?
标签: c# asp.net-mvc routing asp.net-mvc-routing url-routing