MVC路由空参数错误
问题描述:
在我Index
页我有以下链接Details
观点:MVC路由空参数错误
@Html.ActionLink("Details", "Details", new { id = item.ClubId })|
我控制器期待一个int:
public ActionResult Details(int ClubId)
{
var club = _service.GetClub(ClubId);
var model = AutoMapper.Mapper.Map<ClubViewModel>(club);
return View(model);
}
林每次都是这样,虽然获得:
参数字典包含参数'ClubId'的空条目对于方法 'System.Web.Mvc.ActionResult Details(Int32)'在 'MyProject.Web.Controllers.ClubsController'中的非空类型'System.Int32'的0。可选 参数必须是参考类型,可为空类型,或者声明为可选参数 。参数名:参数
我知道这是什么做的路由,但是我已经试过交换UrlParameter.Optional
到""
,使视图模型的ClubId可空,但仍然错误。
如果我重新连接我的控制器接受Club
对象,并从索引视图item
通过,则一切都很好,和ClubId
在调试填充,但我留下了URL中的愚蠢大型参数列表。
我真的不明白问题在这里?
答
你有没有尝试过使用ClubId而不是仅仅是id?
答
您的控制器期待一个名为ClubId
的参数,但您传递的参数为id
。他们需要匹配。
+0
有时我遇到了一个奇怪的问题,因为'id'参数名称根本不起作用,即当调用操作时未填充参数。所以这些应该更好地匹配'ClubId' – Andrei 2015-02-09 16:43:28
你有没有试过使用ClubId而不是仅仅是id? – oskar132 2015-02-09 16:37:34
为了上帝的缘故,谢谢 – JsonStatham 2015-02-09 16:40:03
'/ url/parameters'和'?query = string&parameters'之间有区别。前者影响路由,后者不影响路由。 – Andrei 2015-02-09 16:40:46