努力定制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>标签,这样我总是可以获得当前的过滤器,但是一旦我实际找到正在生成的页面锚点,这就是下一个问题!

努力定制PagedList.Mvc

诀窍是放弃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) 
)