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

hot*_*der 10 asp.net-mvc cascadingdropdown razor

我想知道是否在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中实现级联下拉列表的更好方法吗?

Ale*_*rt. 12

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

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

请看一下我创建的Mvc.CascadeDropDown帮助器.它适用于从MVC3开始的所有MVC版本,并且不需要任何客户端库(它使用普通的vanilla 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
Run Code Online (Sandbox Code Playgroud)

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


Bra*_*d C 2

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

Ajax HTML 帮助器在更新中基本上被忽略了。有一些事情可能会对与此相关的事情有所帮助:

  1. 有一个新的 @Html.EnumDropDownListFor() HTML 帮助器用于从枚举填充下拉列表。
  2. 属性路由功能已得到改进,现在可与 Web API 配合使用,因此将 URL 映射到 API 调用变得更加容易。
  3. 您现在可以在 EditorFor Html 帮助器中传递 html 属性@Html.EditorFor(m => m.FieldName, new { htmlAttributes = new { @class = "form-control" } })

我上周实现了级联下拉菜单,并使用了您提到的经过验证的 JSON 调用。我喜欢将此 jQuery 插件与具有新属性路由的 Web API v2 结合使用。