您可以在表單中放置多選。然後,你有2種可能性提交這種形式:
- 使用一個提交按鈕
- 使用多選的onchange事件(在這種情況下,你將不得不使用JavaScript)
第一點很簡單:
@using (Html.BeginForm())
{
@Html.ListBoxFor(x => x.SelectedItems, Model.Items)
<button type="submit">Filter</button>
}
要實現第二個,你可以使用jQuery並訂閱multiselect的change事件。首先,讓我們給這個多選一個id,使我們可以更容易地選擇它:在一個單獨的JavaScript文件
@using (Html.BeginForm())
{
@Html.ListBoxFor(x => x.SelectedItems, Model.Items, new { id = "filter" })
}
然後:
$(function() {
$('#filter').change(function() {
// when the selection changes we manually trigger the submission
// of the containing form
$(this).closest('form').submit();
});
});
在這兩種情況下,我們正在提交給控制器動作將採用一個字符串數組作爲參數,它將表示多選中將用於過濾結果集的選定值。
太棒了。非常感謝! – Mariah
QQ:不要劫持這篇文章或超出範圍,但是如果我有另一個多選,filter2,並且想要在filter1中選擇某個項目時除了filter1的選定值之外還要獲取它的選定值? – Mariah
@Mariah,在第一個過濾器的更改事件中,可以使用$('#filter2')。val()'讀取第二個過濾器的選定值。由於filter2是一個多選,這將返回一個數組值。 –