【问题标题】:MVC Routing Null parameters errorMVC 路由空参数错误
【发布时间】:2015-02-09 16:34:57
【问题描述】:

在我的Index 页面上,我有以下指向Details 视图的链接:

 @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.Int32” 'System.Web.Mvc.ActionResult 详细信息(Int32)' 在 'MyProject.Web.Controllers.ClubsController'。一个可选的 参数必须是引用类型、可为空的类型或声明为 一个可选参数。参数名称:参数

我知道这与路由有关,但是我尝试将 UrlParameter.Optional 交换为 "" 并使 ViewModel 的 ClubId 可以为空,但错误仍然存​​在。

如果我重新连接我的控制器以接受Club 对象并从索引视图中传入item,那么一切都很好,ClubId 已在调试中填充,但我留下了一个愚蠢的大参数列表网址。

我真的不明白这里的问题是什么?

【问题讨论】:

  • 你试过用 ClubId 代替 id 吗?
  • 看在上帝的份上,谢谢
  • /url/parameters?query=string&amp;parameters 之间存在差异。前者影响路由,后者不影响。
  • 您介意将我的标记为答案吗?非常感谢:D

标签: c# asp.net-mvc


【解决方案1】:

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

【讨论】:

  • 有时我遇到了一个奇怪的问题,id 参数名称根本不起作用,即调用操作时未填充参数。所以这些应该更好地匹配为ClubId
【解决方案2】:

您是否尝试过使用 ClubId 而不是 id?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多