Самый простой способ создать каскадное выпадающее меню ASP.NET MVC 3 с помощью C #

Я хочу создать два DropDownList в каскаде, используя MVC3 (желательно Razor ) с C# .

Я хотел бы иметь один раскрывающийся список, где вы можете выбрать год и другой, где вы можете выбрать определенный набор месяцев в зависимости от выбранного года.

Давайте попробуем. Когда я выбираю текущий год (т.е. 2011 год) в раскрывающемся списке «год», раскрывающийся список «месяц» заполняется месяцами до текущего месяца (т.е. марта). В других случаях (в другие годы) никаких ограничений не предусмотрено. Кроме того, было бы неплохо «заблокировать» раскрывающийся список «месяц», прежде чем будет выбран какой-либо элемент в раскрывающемся списке «год».

Я уже просматривал в Интернете некоторые решения, используя jQuery или даже домашние методы, но все они относятся к прошлым версиям MVC, а некоторые команды устарели в MVC3 .

Как всегда, вы начинаете с модели:

 public class MyViewModel { public int? Year { get; set; } public int? Month { get; set; } public IEnumerable Years { get { return Enumerable.Range(2000, 12).Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() }); } } } 

затем controller:

 public class HomeController : Controller { public ActionResult Index() { var model = new MyViewModel(); return View(model); } public ActionResult Months(int year) { if (year == 2011) { return Json( Enumerable.Range(1, 3).Select(x => new { value = x, text = x }), JsonRequestBehavior.AllowGet ); } return Json( Enumerable.Range(1, 12).Select(x => new { value = x, text = x }), JsonRequestBehavior.AllowGet ); } } 

и, наконец, мнение:

 @model AppName.Models.MyViewModel @Html.DropDownListFor( x => x.Year, new SelectList(Model.Years, "Value", "Text"), "-- select year --" ) @Html.DropDownListFor( x => x.Month, Enumerable.Empty(), "-- select month --" )  

Очевидно, вы заметите, что в моем примере я жестко закодировал все значения. Вы должны улучшить эту логику, используя такие понятия, как текущий год, текущий месяц, возможно, даже извлеките эти значения из репозитория и т. Д., Но для демонстрации этого должно быть достаточно, чтобы поставить вас на правильный путь.

  • Как не сериализовать свойство __type на объектах JSON
  • Как разобрать этот вложенный массив JSON в android
  • Декодирование символов UTF8 в Objective C
  • Ajax Cross Domain Calls
  • Как разобрать JSON с Objective-C?
  • Использование jQuery для построения строк таблицы из ответа Ajax (Json)
  • Передача данных из одной активности в другую с помощью пакета - не отображение во второй активности
  • Добавить виртуальный атрибут для вывода json
  • Как десериализовать объект JObject для .NET
  • Получение импортированных данных json в фрейм данных
  • Angular2 Anchronronous bootstrapping с внешним конфигурационным файлом json
  • Давайте будем гением компьютера.