2011-08-31 241 views
2

我正在使用Razor和C#在ASP .NET MVC 3的网站上工作。根据另一个下拉列表中的选择填充下拉列表

我在视图上有两个下拉列表 - 一个是设备类型,一个是设备模型。设备型号下拉列表的内容基于选定的设备类型。此外,应该禁用设备型号下拉列表,直到选择设备类型。我希望功能是客户端。

我该如何做到这一点?

编辑:在一个不同的问题收到的答案:Fill a drop down list dynamically using Javascript/jQuery

回答

2

为什么不二号的DD列表放在一个div容器,使用Ajax从第一列表中选择值发布到一个控制器动作(平变化),其回报将呈现的部分作为HTML呈现给客户端,然后用动作结果替换第二个列表容器的HTML。

如果你打算使用jQuery来查看$ .ajax,并用你的控制器action替换掉,并分别动态地重写你的目标div html。

+0

这听起来像是要走的路。我非常乐意使用jQuery。您是否可以进一步扩展使用Ajax来调用控制器操作? – link664

+0

完成问一个更清晰的问题,给了我想要做的答案:http://stackoverflow.com/q/7253187/155586 – link664

1

如果没有多少组合,那么您也可以简单地将整个字典放到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?),清除第二个下拉列表并从此数组(它是客户端)填充它。

请记住,我给你一个的例子完全组成你的数据结构......但你应该从中得到这个想法。

相关问题