3
的情況下觸發多次是,即時通訊基本上試圖創建4名的下拉列表中,當一個人改變了重新填充。又名過濾器級聯,彼此。Ajax調用一次
所以我決定把它在一個Ajax調用。基本上,它需要參數,決定應該返回哪些選擇列表。然後用新的下拉菜單替換舊的4個下拉菜單。 (替換當前部分與新的部分)
除,由於某種原因,我得到它調用控制器一次..然後兩次..然後4倍..等。如果舊的未刪除/替換。只是被隱藏了?..
在視覺上,我看到什麼標識期望。下拉菜單會改變選擇選項。
下面是代碼。 (PS對不起,如果一些變量名是錯別字,他們已經改變了這裏張貼)
控制器:
public class Filter
{
public IEnumerable<SelectListItem> List1;
public IEnumerable<SelectListItem> List2;
public IEnumerable<SelectListItem> List3;
public IEnumerable<SelectListItem> List4;
}
public ActionResult GlobalFilter(String l1, String l2, String l3, String l4)
{
Filter filter = new Filter();
filter.List1 = ...selectList
filter.List2 = ...selectList
filter.List3 = ...selectList
filter.List4 = ...selectList
return PartialView(filter);
}
觀點:
<div id="filterPartial">
@Html.Action("GlobalFilter", "Header")
</div>
局部視圖:
@model ns.Controllers.HeaderController.Filter
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
@using (Ajax.BeginForm("GlobalFilter", "Header", new AjaxOptions { UpdateTargetId = "filterPartial" }))
{
@Html.DropDownList("l1", Model.List1, new { })
@Html.DropDownList("l2", Model.List2, new { })
@Html.DropDownList("l3", Model.List3, new { })
@Html.DropDownList("l4", Model.List4, new { })
}
<script type="text/javascript">
$('#l1').change(function() {
$(this).parents('form').submit();
});
</script>
通過外移動這種變化腳本和「上」使用你不必擔心關於每次重新接線並且可能發生多次火災。 – Zach
謝謝。這是一個很好的答案! :) – Mcloving