异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例

时间:2012-11-10 11:58:38

标签: asp.net-mvc asp.net-mvc-4

我看过很多关于这个问题的话题,但找不到我的话题。在此错误之后,它指定了一个来源:

    @{
Line 4:      ViewBag.Title = "Edit product: " + @Model.Name;
Line 5:      Layout = "~/Views/Shared/_MasterLayout.cshtml";
Line 6:  
}

从视图

点击我的产品名称后会发生这种情况
@Html.ActionLink(item.Name, "Edit", new { item.ProductID })

链接变为

http://localhost:31363/Master/Edit?ProductID=1

但是,如果我手动编辑链接

,我无法看到我的视图
http://localhost:31363/Master/Edit/1

有效。那么,我应该修复什么才能让它以第一种方式工作或者在第二种工作中自动工作?我现在没有任何特殊路线,它是Mvc4应用程序的默认路线。

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

@Html.ActionLink(item.Name, "Edit", new { id = item.ProductID })

<强>解释

在您的代码中,您正在创建一个包含ProductID参数的链接,因为

@Html.ActionLink(item.Name, "Edit", new { item.ProductID })

等于:

@Html.ActionLink(item.Name, "Edit", new { ProductID = item.ProductID })

由于默认路由中没有名为ProductID的参数,因此会将其添加到querystring。您的编辑操作也可能有一个名为id的整数参数,如下所示:

public ActionResult Edit(int id)

由于此参数不是可选的或可空的,因此请求无法映射到此操作,您将收到错误。因此参数名称很重要,因为ASP.NET MVC无法自行解决它。