在剃刀视图中渲染列表

时间:2016-06-06 15:25:58

标签: asp.net-mvc

我有这个控制器

// 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'类型的异常,但未在用户代码中处理

我该怎么做才能解决错误?

3 个答案:

答案 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);