根据另一个下拉列表中的选择填充下拉列表
Fill a drop down list based on selection in another drop down list
我正在使用Razor和c#在asp.net MVC 3网站上工作。
我在一个视图上有两个下拉列表-一个用于设备类型,一个用于设备模型。"设备型号"下拉列表的内容基于所选的"设备类型"。此外,在选择设备类型之前,应该禁用设备模型下拉。我希望功能是客户端。
我怎样才能做到这一点?
编辑:收到不同问题的答案:使用Javascript/jQuery动态填充下拉列表
为什么不将第二个dd列表放在容器div中,使用Ajax将从第一个列表中选择的值发送到控制器操作(onchange),该操作将呈现的部分作为HTML返回给客户端,然后用操作结果替换第二个列表容器的HTML。
如果您愿意使用jquery,请查看$。和replaceWith来与你的控制器动作对话,并分别动态重写你的目标div html
如果没有很多组合,那么您也可以简单地将整个字典以JavaScript变量的形式传递给客户端,然后根据需要在客户端完成整个操作。
的例子:
在控制器中,你会像这样将字典存储在ViewBag中:
// Keep in mind that I don't know your data structure, but you'll get the point.
ViewBag.DeviceDictionary = myDictionary;
然后在视图中,你可以这样做:
<script type="text/javascript">
// new-up an array in JavaScript.
var devices = [];
// ... IT'S RAZOR TIME!!!
@foreach (Device d in ViewBag.DeviceDictionary)
{
<text>
// We're back in JavaScript here... new up the dictionary.
devices[@d.ID] = [];
</text>
foreach (var model in d.Models
{
<text>devices[@d.ID].push("@model.Name");</text>
}
}
</script>
然后,您只需编写一些简单的JavaScript(使用jQuery?)来清除第二个下拉列表并从该数组(这是客户端)填充它。
请记住,我给你一个的例子完全构成你的数据结构…但是你应该从这里得到一个想法
相关文章:
- 将下拉列表“选择值”传递到 URL
- 禁用基于下拉列表选择 asp.net JavaScript 启用文本框
- 下拉列表<选择>为列表.js
- 经典 ASP - 下拉列表:选择与第一个下拉列表具有相同值的所有下拉列表
- 映射下拉列表选择到URL
- 删除基于先前下拉列表选择的“选择下拉列表”选项
- 下拉列表选择的值在UI淘汰js中没有更新
- 如何将 ID 分配给动态下拉列表选择
- 使用 dojo 将鼠标悬停在动态下拉列表选择上时添加工具提示
- 链接下拉列表选择列表代码 -- 连接数据
- Javascript 不遵循下拉列表选择
- 检索引导下拉列表选择文本
- 表单事件更改不适用于下拉列表选择
- 无法检测加载时的选择/下拉列表选择事件
- 如果另一个下拉列表选择发生更改,则重置另一个下拉列表
- 基于复选框和下拉列表选择优化列表
- 使用 AJAX 和 ORACLE 以及不使用 php 填充下拉列表(选择 )
- 如何在jQuery弹出窗口中显示下拉列表选择列表并检索所选值
- 调用 java 方法,从 jsp 中的下拉列表选择中设置参数值
- 使用列表而不是选项进行下拉列表选择