我正在尝试找出将过滤应用到我在Main / Index视图(MVC3)中显示的webgrid的最佳方法(最小的努力)。
我添加了一个允许按某列过滤的多小节点,我希望每个选择项捕获click事件(我已经实现并正在工作),然后以某种方式重新调用包含所有项的Index()方法根据是否从过滤器调用来重建视图的代码(多选)。
最好的方法是什么?我知道这是一个广泛的问题,但任何信息将不胜感激。
谢谢!
答案 0 :(得分:1)
您可以将多选项放在表单中。然后您有两种可能性来提交此表单:
第一点很简单:
@using (Html.BeginForm())
{
@Html.ListBoxFor(x => x.SelectedItems, Model.Items)
<button type="submit">Filter</button>
}
要实现第二个,您可以使用jQuery并订阅multiselect的change事件。首先,让我们给这个multiselect一个id,以便我们可以更容易地选择它:
@using (Html.BeginForm())
{
@Html.ListBoxFor(x => x.SelectedItems, Model.Items, new { id = "filter" })
}
然后在单独的javascript文件中:
$(function() {
$('#filter').change(function() {
// when the selection changes we manually trigger the submission
// of the containing form
$(this).closest('form').submit();
});
});
在这两种情况下,我们提交的控制器操作将采用一个字符串数组作为参数,它将表示多选中将用于过滤结果集的选定值。