我有这个控制器
// GET: Home
public ActionResult Index()
{
List<Users> Users = new List<Models.Users>()
{
new Users() {CustomerID = "12", Email = "Email1" },
new Users() {CustomerID = "22", Email = "Email2" },
new Users() {CustomerID = "13", Email = "Email3" },
new Users() {CustomerID = "14", Email = "Email4" },
};
return View();
}
这个观点
@model IEnumerable<MB.eXum.Models.Users>
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Email)
</th>
<th>
@Html.DisplayNameFor(model => model.CustomerID)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
@Html.DisplayFor(modelItem => item.CustomerID)
</td>
</tr>
}
当我运行解决方案时,我在代码行中得到错误
@foreach (var item in Model)
App_Web_index.cshtml.a8d08dba.xeqljjsw.dll中发生了'System.NullReferenceException'类型的异常,但未在用户代码中处理
我该怎么做才能解决错误?
答案 0 :(得分:1)
更改您的回报以包含您的列表,如下所示:
return View(Users);
目前,您的模型将为null。
答案 1 :(得分:1)
在Razor视图中,您等待用户列表,因此您必须将其从控制器传递到视图。
在剃刀视图中,您需要等待以下列表
@model IEnumerable<MB.eXum.Models.Users>
在你的控制器中,你必须将这种类型的对象列表传递给像这样的视图
return View(Users);
其中,Users是您创建的列表。
List<Users> Users = new List<Models.Users>()
{
new Users() {CustomerID = "12", Email = "Email1" },
new Users() {CustomerID = "22", Email = "Email2" },
new Users() {CustomerID = "13", Email = "Email3" },
new Users() {CustomerID = "14", Email = "Email4" },
};
有关MVC的更多信息,请访问:http://www.codeproject.com/Articles/54576/Understanding-ASP-NET-MVC-Model-View-Controller-Ar
答案 2 :(得分:1)
您的视图预计会收集Users
。
现在在您的控制器中,您正在创建Users
并将它们放在列表中,但是当完成后,您将返回任何内容,而不是您刚刚创建的用户集合因此NullReferenceException
。
View - 创建一个ViewResult对象,用于呈现响应视图
您的ViewResult
对象是您的列表,您将其命名为Users
,以便解决您需要的错误:
return View(Users);