我有一个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 }))
我甚至无法在intellisense中找到方法@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包,清理和重建解决方案,但似乎没有任何效果。我在这里缺少什么?
答案 0 :(得分:6)
上面的答案对我没有帮助,但我发现了一个可能对其他人有帮助的解决方案。
更改为:
@using X.PagedList.Mvc.Core
我还有一个仅使用@using X.PagedList.Mvc
的using语句。我不知道为什么其他用户被投票,因为它有效。
答案 1 :(得分:0)
首先,您在这里有额外转化:
@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不同:
答案 2 :(得分:0)
我遇到了同样的问题并添加了@using X.PagedList.Mvc.Core将在intellisense中显示它。希望这有帮助。