Представление возвращает ошибку при попытке вызвать связанное представление PageList - PullRequest
0 голосов
/ 27 мая 2019

У меня есть одна ошибка в моем представлении, которая вызывает другой ActionResult, содержащий Pagedlist. На текущей странице я выбираю частоту выплат, и это перенаправляет на представление, которое выполняет PayRun за выбранный период. Когда я запускаю платежную ведомость после выбора частоты выплат, я получаю «IPagedList» не содержит определения для «PayDayId», и не может быть найден метод расширения «PayDayId», принимающий первый аргумент типа «IPagedList» (вы пропустили директива об использовании или сборка

В ChoosePayCode.cshtml у меня есть:

@model MMM_SYSTEM.Models.PayRun.PayRun
  ...
   <div class="form-group">
                                @Html.LabelFor(model => model.PayDayId, htmlAttributes: new { @class = "control-label col-md-2" })
                                <div class="col-md-5">
                                    @Html.DropDownListFor(m => m.PayDayId, Model.PayDayCodes, "Please Select", htmlAttributes: new { @class = "form-control" })
                                    @Html.ValidationMessageFor(model => model.PayDayId, "", new { @class = "text-danger" })
                                </div>
                            </div>

У меня уже есть пакеты Nuget для пейджинга, и на них есть ссылки в соответствующем представлении, как показано ниже (PayRun.cshtml):

    @using PagedList;
@model IPagedList<MIHR_SYSTEM.Models.PayRun.PayRun>
<div id="wrapper">
 @if (Model.Count() <= 0)
                                {
                                    <tr> <td colspan="3"> No record found </td> </tr>
                                }
                                else
                                {

                                    foreach (var item in Model)
                                    {
                                        <tr>
                                            <td>@Html.DisplayFor(modelItem => item.EmployeeNumber)</td>
                                            <td>@Html.DisplayFor(modelItem => item.PayDayDate)</td>
                                            <td>@Html.DisplayFor(modelItem => item.GrossPay)</td>

                                        </tr>
                                    }
                                } 
 @Html.PagedListPager(Model, PageNumber => Url.Action("Index", new { 
PageNumber }))
</div>

Я попытался изменить ChoosePayCode.cshtml, как показано ниже, но ошибка все еще сохраняется, вместо этого Razor показывает, что в этом случае он не может применить индексирование:

 <th>
      @Html.LabelFor(model => model[0].PayDayId, htmlAttributes: new { @class = "control-label col-md-2" })
  </th>

В контроллере у меня есть:

 public ActionResult Payroll(int? PageNumber)
List<Models.PayRun.PayRun> payruns = new List<Models.PayRun.PayRun>();
    {        
using (SqlConnection conn = new SqlConnection(Helpers.DatabaseConnect))
        {

        ...
        ...
          conn.Open();
                    cmd.ExecuteNonQuery();

                }


                payruns.Add(payrun);
            }

            conn.Close();
        }

        IPagedList<Models.PayRun.PayRun> payrunss = payruns.ToPagedList(PageNumber ?? 1, 8);

        return View(payrunss);
    }

Я искал несколько источников, но до сих пор не могу понять, где я неправильно понял. Есть предложения о том, где я должен измениться?

...