我根本无法在标题中正确描述这一点。
我们的产品用户事件的历史记录显示为分页,并允许您设置每页的事件数,以及根据需要过滤几个列的结果。过滤器过去只用作一个选择。例如,会有一个事件类型的下拉列表,您可以只选择其中一个并对其进行过滤。我添加了对在每个过滤器下拉列表中选择多个选项的支持,现在分页不起作用。
它现在所做的是为每个页码,上一页/下一页链接以及更改每页事件数的链接生成ActionLink。由于它们只是单一选择,因此很容易将这些值放入路由值并将它们发送给控制器,控制器将使用它们返回下一页的正确过滤数据。现在我混合了简单的枚举值(一些下拉仍然只是单一选择)和枚举值列表。
我在我的页面上收到过滤数据作为RouteValueDictionary,因此我必须检查该值是对象还是对象列表,然后我才能对它做任何正确的事情,这让我觉得很难看。
简而言之,我需要生成将过滤器选项发送回控制器的链接。一些过滤器选项将是由字符串键入的枚举,而一些过滤器选项将是由字符串键入的枚举列表。我在<string, object
&gt;视图一侧可以使用这些过滤器选项。字典。
我无法弄清楚这样做的“好”方式是什么。
如果您需要了解其他任何内容,请与我们联系。
答案 0 :(得分:0)
我认为当您的过滤器更新时,您需要刷新结果页面。如果是这种情况,我会做一些jQuery Ajax来处理整个事情,而不是修改链接URL。我切换到Ajax的原因是因为很容易创建一个你想用它发送到服务器的对象,而将复杂对象作为查询字符串发送并不是那么容易。你会有类似的东西:
$(document).on('click','selector of your filter inputs', function(){
$.Ajax({
url: '/[Controller]/[Action]',
type: 'GET',
data: { filter1: $('input').val()... }, // however complex object you need
success: function(data){
$('selector of the result container').html(data);
}
});
});