jquery - 在 MVC 中维护级联下拉列表的最佳方法
问题描述
我有两个下拉列表,如下所示
@Html.DropDownListFor(model => model.ProductId, new SelectList(ViewBag.Products, "ProductId", "ProductName", Model == null? string.Empty : Model.ProductId),"Select Product",new { @class = "form-control" })
@Html.DropDownListFor(model => model.SubProduct, Enumerable.Empty<SelectListItem>(), "Select Sub Product", new { @class = "form-control" })
我正在使用 JQuery 基于所选产品绑定子产品。这工作正常。现在,在编辑时,我正在设置产品的选定值。这时,子产品的绑定和设置值的最佳方式是什么?
我正在考虑的一种方法是使用 JQuery 手动触发下拉菜单的更改事件。但问题是这需要在 jquery 函数中手动设置选定的值。
有什么建议么?
解决方案
你的代码可以是这样的
@Html.DropDownListFor(model => model.ProductId, new SelectList(ViewBag.Products, "ProductId", "ProductName", Model == null? string.Empty : Model.ProductId),"Select Product",new { id="product-ddl", @class = "form-control" })
<select id="sub-product-ddl" class = "form-control" name="SubProduct"></select>
<script>
$("#product-ddl").change(function() {
var selectedProductId = $(this).val();
var url = "your url";
var method = "GET";
$.ajax({
method: method ,
url: url ,
data: { ProductId: selectedProductId }
})
.done(function(response) { // assume it is list of products
var subProductsDdl = $("#sub-product-ddl");
subProductsDdl.find('option').remove();
for(var i = 0;i< response.length;i++){
subProductsDdl.append($('<option>', {
value: response[i].ProductId,
text: response[i].ProductName
}));
}
});
});
</script>
只需将其编辑为您的 API 端点
推荐阅读
- azure-devops - 在 azure devops 中更改项目区域位置
- java - 使用 JTextArea 和 StringBuilder 对多行文本进行不同的着色
- r - 在 invalidatelater 观察者内增加反应值
- php - PHP base64 编码发布请求
- android - Flutter:在 Android Studio 中打开 android 模块被禁用
- c - 如何避免 C GTK 中的内存泄漏(使用 libxml)
- c++ - 如何将 VDT 的 Pade Exp fast_ex() 大约双版本的标量代码转换为 SSE2?
- python - Django/Postgres 将使用多少字节用于十进制字段?
- ios - Xcode Storyboard 文件突然被破坏
- java - EditText 可以根据当前字符长度更改软键盘吗