【发布时间】:2011-01-12 16:35:05
【问题描述】:
首先,我是 MVC 新手,所以如果是基本问题,请原谅。
我正在使用自定义路由来创建以下 URL (http://mysite/subscriber/12345),其中 12345 是订阅者号码。我希望它在Subscriber 控制器中运行ShowAll 操作。我的路由正在触发并使用Phil's route debugger,当我传入上面的 url 时,路由调试器显示 ID 为 12345。
我的控制器接受一个 int 作为subscriberID。开火的时候,
控制器抛出错误
参数字典包含不可为空类型“System.Int32”的参数“id”的空条目。
为什么路由调试器显示值而控制器看不到?
这是我的路线(第一个是罪魁祸首)
routes.MapRoute(
"SubscriberAll",
"subscriber/{id}",
new { controller = "Subscriber", action = "ShowAll", id=0 },
new { id = @"\d+" } //confirm numeric
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
知道为什么我在ShowAll 操作中得到一个空值吗?这是动作方法签名:
public ActionResult ShowAll(int id)
【问题讨论】:
-
你能把所有的路由注册连同动作方法签名一起发布吗?
-
我认为问题出在你的约束上。我不是正则表达式忍者,所以我无法帮助你。
标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-routing