MVC路由空参数错误

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中的愚蠢大型参数列表。

我真的不明白问题在这里?

+3

你有没有试过使用ClubId而不是仅仅是id? – oskar132 2015-02-09 16:37:34

+0

为了上帝的缘故,谢谢 – JsonStatham 2015-02-09 16:40:03

+0

'/ url/parameters'和'?query = string&parameters'之间有区别。前者影响路由,后者不影响路由。 – Andrei 2015-02-09 16:40:46

你有没有尝试过使用ClubId而不是仅仅是id?

您的控制器期待一个名为ClubId的参数,但您传递的参数为id。他们需要匹配。

+0

有时我遇到了一个奇怪的问题,因为'id'参数名称根本不起作用,即当调用操作时未填充参数。所以这些应该更好地匹配'ClubId' – Andrei 2015-02-09 16:43:28