ASP.NET MVC 5中的级联下拉列表

时间:2014-04-09 03:24:04

标签: asp.net-mvc razor cascadingdropdown

我想知道是否在ASP.NET MVC 5中引入了一些新的帮助器或方法来实现级联下拉列表。我知道一种通过使用JSON调用在MVC 3和MVC 4中实现级联下拉列表行为的方法

http://www.dotnet-tricks.com/Tutorial/mvc/HL53191212-Custom-Validation-for-Cascading-Dropdownlist-in-MVC-Razor.html

所以有人知道在MVC 5中实现级联下拉列表的更好方法吗?

2 个答案:

答案 0 :(得分:12)

我知道这是一个老问题,但有人仍然觉得它很有用

我正在寻找相同的东西,但是没有找到任何稳定和有用的东西,所以我最终自己实现了它:

请查看我创建的Mvc.CascadeDropDown帮助器。 它适用于从MVC3开始的所有MVC版本,不需要任何客户端库(它使用普通的JavaScript)。

用法非常简单:

@using Mvc.CascadeDropDown

//First simple dropdown 
@Html.DropDownListFor(m=>m.SelectedCountry, Model.Countries,
      "Please select a Country", new {@class="form-control"})

//Dropdown list for SelectedCity property that depends on selection of SelectedCountry property
@Html.CascadingDropDownListFor( 
  expression: m => m.SelectedCity, 
  triggeredByProperty: m => m.SelectedCountry,  //Parent property that trigers dropdown data loading
  url: Url.Action("GetCities", "Home"),  //Url of action that returns dropdown data
  actionParam: "country",   //Parameter name for the selected parent value that url action receives
  optionLabel: "Please select a City", // Option label
  disabledWhenParrentNotSelected: true, //If true, disables dropdown until parrent dropdown selected
  htmlAttributes: new { @class = "form-control" }) //Html attributes

希望对你们中的一些人有所帮助

答案 1 :(得分:2)

不,MVC 5中没有新的帮助器或方法可以提供帮助。

更新中基本上忽略了Ajax HTML帮助程序。有些事情可能有助于解决与此相关的事情:

  1. 有一个新的@ Html.EnumDropDownListFor()HTML帮助器来填充Enum的下拉列表。
  2. Attribute routing functionality已经改进,现在可以使用Web API,因此将URL映射到API调用要容易得多。
  3. 您现在可以在EditorFor Html帮助器中传递html属性@Html.EditorFor(m => m.FieldName, new { htmlAttributes = new { @class = "form-control" } })
  4. 我上周实施了级联下拉菜单,并使用了您提到的经过验证的真实JSON调用。我喜欢将this jQuery plugin与Web API v2结合使用,并使用新的属性路由。