我正在使用PagedList
来展示搜索结果。
我希望PagedListPager
在分页链接中包含当前的查询字符串值。
(这些绑定到搜索Action
上的VM,以便在每个页面上显示正确的结果,搜索表单将继续显示搜索条件。)
当@ Html.EditorFor()包含默认值" false"布尔值。
RouteValueDictionary将重复的KV对连接成逗号分隔的字符串。所以我的分页链接的查询字符串最终如下:
searchTitles=true,false
但是这并没有很好地绑定到搜索操作的VM,这似乎需要这个以实现正确的布尔绑定:
searchTitles=true&searchTitles=false
(当尝试重新显示搜索表单时,它告诉我" true,false"不是有效的布尔值。)
PagedListPager实施
// Maintains values of the current querystring so that they are passed through from page to page. Also enables bookmarking by the user.
RouteValueDictionary rvd = new RouteValueDictionary(ViewContext.RouteData.Values);
foreach (string key in Request.QueryString.Keys)
{
rvd[key] = Request.QueryString[key].ToString();
}
rvd["pageSize"] = Model.PageSize;
<text>
@Html.PagedListPager((IPagedList)Model,
page => Url.Action(null, rvd.SetValue("page", page.ToString())),
new PagedListRenderOptions
{
MaximumPageNumbersToDisplay = 6,
LiElementClasses = new string[] { "ListControls__control" }
})
</text>