我有级联下拉列表,我应该在每个onchange()
事件中将表单数据发送到控制器。这就是为什么我应该对onchange()
下拉列表事件进行 2 种不同的操作。
1)这会在 dropdowlists 的每个 onchange() 事件中向控制器发送数据:(这是我的第一个下拉列表)
@Html.DropDownListFor(model => model.CategoryId, ViewBag.CategoryList as IEnumerable<SelectListItem>, "-",
new { id = "CategoryDDL", onchange = "$('#MyForm').trigger('submit');" })
2)这是用于级联下拉列表:
<script type="text/javascript">
$(function () {
$("#CategoryDDL").change(
function () {
loadLevelTwo(this);
});
loadLevelTwo($("#CategoryDDL"));
});
function loadLevelTwo(selectList) {
// my some code...
}
</script>
在这种情况下,当我更改 CategoryDDL
下拉列表时,会混合 2 个操作。它试图一起做 2 个操作。
我想替换它们。首先是级联操作,然后是数据提交操作。我怎样才能做到这一点?
编辑:
没有loadLevelTwo()
功能,一切正常:当我更改下拉列表时,请求转到控制器以过滤产品。然后我添加loadLevelTwo()
了级联下拉列表。因为我有 2 个下拉列表。我想当我更改第一个下拉列表时,第二个下拉列表会自动更新。我的脚本就是这样做的。但是,这些事件混合在一起。在控制器中,我有过滤级联下拉列表的操作:
public ActionResult FilterProducts(CriteriaModel model) {}
和
public ActionResult GetSubCategoryByCategoryId(int id) {}
这些方法同时起作用。一条线在任何行动中起作用,然后进入其他行动。然后返回第一个动作,因此,当动作返回视图时,它被包围。我在函数之后发送表单loadLevelTwo()
,但它不能解决问题:
loadLevelTwo($("#CategoryDDL"));
$('#MyForm').trigger('submit');