如何将重复的查询字符串键传递给PagedListPager?

时间:2016-09-03 00:36:59

标签: c# asp.net-mvc query-string pagedlist

我正在使用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>

0 个答案:

没有答案