如何在选择另一个@ Html.DropDownList 后填充@ Html.DropDownList

DropDownList加载了一些类别,我需要填充另一个@ Html.DropDownList,具体取决于在第一个下拉列表中选择的选项。

这是我用来填充第一个下拉列表的代码:

在控制器上:

TecnicService ListCategory = new TecnicService(); IList resultCat = ListCategory.GetCategory(); List CatDropDown = new List(); foreach (Category in resultadoCat) { CatDropDown.Add(new SelectListItem { Value = a.Id.ToString(), Text = a.Name.ToString() }); } 

在视图上:

  @model APP.Models.DataViewModel @using (Html.BeginForm("NewPol", "Tecnic", null, FormMethod.Post, new { id = "pol-data-form", @class = "form-horizontal" })) { 
@Html.DropDownList("BasicData", Model.Category, new { @class= "required", name="category"})
@Html.DropDownList() WHAT DO I DO HERE???????
. .}

我通过返回List的服务获取数据,现在我需要填充第二个下拉列表,具体取决于第一个下拉列表的选择。

您正在寻找的是Cascading Drop Down List

您可以创建一个jQuery插件来跟踪更改并向服务器发送ajax请求以获取另一个下拉列表的值:

 (function ($) { $.fn.cascade = function (options) { var defaults = { }; var opts = $.extend(defaults, options); return this.each(function () { $(this).change(function () { var selectedValue = $(this).val(); var params = { }; params[opts.paramName] = selectedValue; $.getJSON(opts.url, params, function (items) { opts.childSelect.empty(); $.each(items, function (index, item) { opts.childSelect.append( $('') .attr('value', item.Id) .text(item.Name) ); }); }); }); }); }; })(jQuery); 

然后简单地将其连线:

 $(function () { $('#SelectedProvinceId').cascade({ url: '@Url.Action("Cities")', paramName: 'provinceId', childSelect: $('#SelectedCityId') }); $('#SelectedCityId').cascade({ url: '@Url.Action("Suburbs")', paramName: 'cityId', childSelect: $('#SelectedSuburbId') }); }); 

来源: MVC 3 Razor视图中的级联下拉

来自简单谷歌搜索的更多来源:

AJAX与MVC4级联

http://www.sidecreative.com/Blog/Entry/Cascading-dropdown-lists-with-MVC4-and-jQuery

http://www.codeproject.com/Articles/258172/Simple-Implementation-of-MVC-Cascading-Ajax-Drop-D

它通常用ajax完成。 您可以通过编写一些JQuery代码或使用可以在Web上执行的许多插件中的一个来完成它。

作为旁注,我注意到你使用TwitterBootstrap。 查看TwitterBootstrapMvc 。 您可能会发现它很有用。

不知道为什么亚当的答案被低估了。 他实际上给了一个很好的答案。 不知道gusadolfo是否因为没有提供代码而对其进行了贬低。 如果是这样的话,gusadolfo,不要指望代码。 我们可以指导您,修复您在某处犯下的错误,但不要指望我们完全完成您的工作。