无法绑定到参数

时间:2010-10-08 06:51:33

标签: c# asp.net-mvc-2 asp.net-mvc-routing

我有默认路由:

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),它应该被路由到我的索引方法。但我似乎无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

ASP.NET MVC路由使用反射。它将在控制器内部查找与您在路径中定义的模式匹配的方法。如果它找不到......你已经看到了会发生什么。

所以答案是(在评论中发布)将id参数的类型更改为Nullable<int>,即int?