@Html.PagedListPager 找不到

@Html.PagedListPager can't be found

我有一个 ASP.NET.CORE 2.0 应用程序,我想向我的站点添加分页。我从 Troy Goode PagedList 开始,但我遇到了同样的错误,我去尝试了 X 版本,但仍然得到了相同的结果。

Reference to type 'HtmlString' claims it is defined in 'System.Web', but it could not be found
@Html.PagedListPager((IPagedList)Model, page => Url.Action("Index", new { page }))

我什至在智能感知中找不到方法@Html.PagedListPager 更新:它不适用于全新的空项目

@using X.PagedList.Mvc; @*import this so we get our HTML Helper*@
@using X.PagedList; 
@model IPagedList<StecajneObjave.Models.ViewModels.ObjavaViewModel>



<p>
     <a asp-action="Create">Create New</a>
</p>
    <table class="table">
   <tbody>
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.DatumObjave)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.NazivStecajnogDuznika)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.OIBStecajnogDuznika)
        </td>

        <td>
            @Html.ActionLink("Delaji", "Details", new { id = item.Id }) 
        </td>
    </tr>
}
   </tbody>
  </table>

<h3>Minimal Paging Control w/ Page Count Text</h3>
@Html.PagedListPager((IPagedList)Model, page => Url.Action("Index", new { page }))

我已经尝试重新安装 nuget 包、清理和重建解决方案,但似乎没有任何效果。我在这里错过了什么?

首先,你在这里有一个额外的转换

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

这是因为您的模型已经是 IPagedList:

@model IPagedList<StecajneObjave.Models.ViewModels.ObjavaViewModel>

所以你在分页列表中要做的就是:

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

其次,您正在传递 Url.Action 但 忘记了参数 :

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

什么时候应该是:

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

编辑:

参见 asp .net core 2 HtmlString 的参考资料,它与 Asp.Net MVC:

不同

HtmlString documantation

我有同样的问题,添加@using X.PagedList.Mvc.Core 会在智能感知中显示它。希望对您有所帮助。

上面的答案对我没有帮助,但我找到了一个可能对其他人也有帮助的解决方案。

改为:

@using X.PagedList.Mvc.Core

我还有一个仅使用 @using X.PagedList.Mvc 的 using 语句。我不明白为什么其他用户因为它有效而被否决。