PagedList <t>不包含Model <t>属性的定义

时间:2017-01-13 12:19:40

标签: c# asp.net-mvc pagedlist

我有以下部分视图:

  @model IPagedList<Student>

 <h2>List of Students</h2>


<div id="studentList">

    <div class="pagedList" data-uwa-target="#studentList">

          @Html.PagedListPager(Model,page=>Url.Action("Index",new  { page }),
         PagedListRenderOptions.MinimalWithItemCountText)


    </div>

    <table class="table">

        <tr>
        <th>
            @Html.DisplayNameFor(model => model.LastName) //here error
        </th>
        <th>
            @Html.DisplayNameFor(model => model.FirstName) //here error
        </th>
        <th>
            @Html.DisplayNameFor(model => model.City) //here error
        </th>
        <th></th>
    </tr>


        @foreach (var item in Model)
        {

            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.LastName)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.FirstName)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.City)
                </td>
            </tr>

        }

    </table>



        <div class="row">

            <div class="col-sm-6" id="slid">
                <button id="export" class="btn btn-default btn-primary" onclick="location.href='@Url.Action("ExportInCSVFormat")';return false;">Export Student List in CSV Format</button>
            </div>

            <div class="col-sm-4" id="excelSlide">
                <button id="excelExport" class="btn btn-default btn-success" onclick="location.href='@Url.Action("ExportStudentsInExel")';return false;">Export Student List in Excel Format</button>
            </div>

        </div>

我的Index.cshmtl是:

  @model IPagedList<Student>

 @{
   ViewBag.Title = "Index";
 }

@Html.Partial("_Student", Model)

我的StudentController是

   public ActionResult Index(int page=1)
      {
          var model = dbAllStudents.Students
                                .OrderByDescending(p => p.LastName)
                                .ToPagedList(page, 10);
           return View(model);
       }

问题发生在“@ Html.DisplayNameFor(model =&gt; model.LastName)”上。它说“IPaged不支持LastName的定义。

我知道问题是由于我需要添加的学生控制器的Index方法引起的。选择但我不确定。如果有人可以帮助我,我真的很感激

1 个答案:

答案 0 :(得分:0)

它不起作用,因为您要使用的重载方法不适合您的界面。适用于IEnumerable<>类型。您可以访问列表中的第一个元素,即使列表为空,它也应该返回正确的值。

将您的表格定义更改为:

<table class="table">

      <tr>
      <th>
          @Html.DisplayNameFor( => Model[0].LastName)
      </th>
      <th>
          @Html.DisplayNameFor(_ => Model[0].FirstName)
      </th>
      <th>
          @Html.DisplayNameFor(_ => Model[0].City)
      </th>
      <th></th>
      </tr>

    @foreach (var item in Model)
    {
      <tr>
          <td>
              @Html.DisplayFor(_ => item.LastName)
          </td>
          <td>
              @Html.DisplayFor(_ => item.FirstName)
          </td>
          <td>
              @Html.DisplayFor(_ => item.City)
          </td>
      </tr>
    }
</table>

一切都会好的。