我有默认路由:
routes.MapRoute(
"Shortie", // Route name
"{controller}/{id}", // URL with parameters
new { controller = "Ettan", action = "Index", id = "id" } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Ettan", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
我有一个控制器:NewsController。它有一种方法,如下:
public ActionResult Index(int id)
{
...
}
如果我浏览/ News / Index / 123,它可以正常工作。 / News / 123有效。但是,/ News / Index?id = 123没有(它找不到任何名为“index”的方法,其中id被允许为null)。所以我似乎对路由和模型绑定器如何协同工作缺乏了解。
询问的原因是我想要一个带有参数“id”的不同新闻来源的下拉列表。所以我可以选择一个新闻源(例如“sport”,id = 123),它应该被路由到我的索引方法。但我似乎无法让它发挥作用。
答案 0 :(得分:1)
ASP.NET MVC路由使用反射。它将在控制器内部查找与您在路径中定义的模式匹配的方法。如果它找不到......你已经看到了会发生什么。
所以答案是(在评论中发布)将id
参数的类型更改为Nullable<int>
,即int?
。