【发布时间】:2016-03-02 12:22:26
【问题描述】:
我有一个使用 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> 标签,这样我总是可以获得当前的过滤器,但是一旦我能真正找到正在生成的页面锚点,那就是下一个问题!)
【问题讨论】:
-
是什么让您认为您应该更改网址?正常的做法是在包含过滤控件的视图中有一个表单(
FormMethod.Get),然后提交表单,根据表单控件过滤数据并返回视图。 -
应用程序当前的结构方式,过滤器控件是包含可在任何页面上使用的表单的部分。 Pager 在每个页面的底部有一个单独的部分,并构建了一系列 A 标签。由于这不在表单中,我需要一种机制将表单值发送回寻呼机生成的 url。
-
您通过使用表单并发布到 GET 方法来执行此操作。
-
分页器不在表单中,出现在页面底部,而过滤器在顶部(客户想要的位置)。所以你建议我包装分页内容,和表单内的寻呼机?由于寻呼机不提交表单,只是创建了一系列页面链接,我不明白这将如何帮助将表单值传回。 (虽然我打算启动开发工作站并尝试这个,因为我怀疑我错过了明显的:-)
-
寻呼机不应该在表单中。给我一点时间,我会给你一个指向另一个答案的链接,说明如何做到这一点。
标签: c# asp.net-mvc