努力定制PagedList.Mvc
本文关键字:Mvc PagedList 努力 | 更新日期: 2023-09-27 18:37:11
我有一个使用PagedList.MVC的项目。
我有一个屏幕,我希望用户能够在该屏幕上检索过滤后的数据集(按开始日期,结束日期和位置过滤)。
现在我的想法是在DocumentReady上添加一些jquery,并使用它来替换每个页面URL中的占位符。
所以现在我有以下代码:
PagedListRenderOptions pagerOptions = new PagedListRenderOptions()
{
FunctionToTransformEachPageLink = (liTag, aTag) => { aTag.Attributes.Add("class","foo"); liTag.InnerHtml = aTag.ToString(); return liTag;},
DisplayPageCountAndCurrentLocation=true
};
和
@Html.PagedListPager(Model,
page => Url.Action(ViewBag.Method, new { page, AllOptions = PagedDealershipLocation, StartDate = "stPageDate", EndDate = "endPageDate" }),
PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(pagerOptions, ajaxopts)
然而,当呈现分页列表时,该类尚未添加到 html 中,因此我不能使用它来操作 url。
我很欣赏我目前的方法已经有缺陷,因为如果过滤器被更改,这发生在 DocumentReady 函数之外。但是现在我只想了解为什么使用上面的代码,我没有看到<a>
标签的类属性。(理想情况下,我希望能够挂钩到正在单击的<a>
标签,这样我总是可以获得当前的过滤器,但是一旦我实际找到正在生成的页面锚点,这就是下一个问题!
诀窍是放弃javascript,并通过ViewBag将过滤器所需的值放回视图中。
即
ViewBag.StartDate = StartDate;
ViewBag.EndDate = EndDate;
由于我的寻呼机处于部分状态,我还必须将数据从 Viewbag 传递到部分;
@Html.Partial("_Pager", @Model, new ViewDataDictionary {{ "Method", ViewBag.MethodName }{ "StartDate", ViewBag.StartDate }, { "EndDate", ViewBag.EndDate } })
然后,我可以通过将StartDate和EndDate添加到寻呼机来关闭圆圈。
@Html.PagedListPager(Model,
page => Url.Action(ViewBag.Method, new { page,
StartDate = ViewBag.StartDate, EndDate = ViewBag.EndDate}),
PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(pagerOptions, ajaxopts)
)