我有一个使用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>
标签的class属性。 (理想情况下,我更喜欢能够挂钩被点击的<a>
标签,所以我总能得到当前的过滤器,但是一旦我真正找到正在生成的页面锚点,这就是下一个问题!)
答案 0 :(得分:1)
诀窍是放弃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)
)