Самый простой способ создать каскадное выпадающее меню ASP.NET MVC 3 с помощью C #
Я хочу создать два DropDownList
в каскаде, используя MVC3
(желательно Razor
) с C#
.
Я хотел бы иметь один раскрывающийся список, где вы можете выбрать год и другой, где вы можете выбрать определенный набор месяцев в зависимости от выбранного года.
Давайте попробуем. Когда я выбираю текущий год (т.е. 2011 год) в раскрывающемся списке «год», раскрывающийся список «месяц» заполняется месяцами до текущего месяца (т.е. марта). В других случаях (в другие годы) никаких ограничений не предусмотрено. Кроме того, было бы неплохо «заблокировать» раскрывающийся список «месяц», прежде чем будет выбран какой-либо элемент в раскрывающемся списке «год».
- Как создавать / читать / записывать файлы JSon в Qt5
- Grails JSONBuilder
- конвертировать из SqlDataReader в JSON
- JSON.net сериализуется непосредственно из oledbconnection
- JQuery, Spring MVC @RequestBody и JSON - заставляя работать вместе
Я уже просматривал в Интернете некоторые решения, используя jQuery
или даже домашние методы, но все они относятся к прошлым версиям MVC, а некоторые команды устарели в MVC3
.
- Почему RestTemplate не связывает ответное представление с PagedResources?
- Связывание значения столбца в jqGrid с новой страницей с помощью GET
- Как запросить firebase для свойства с определенным значением внутри всех детей
- Поместите байт-массив в JSON и наоборот
- Обновление ссылок на силовом графике из динамических данных json
- Как преобразовать массив Json в список объектов в c #
- Словарь POST json
- Как разбирать JSON в Scala с использованием стандартных classов Scala?
Как всегда, вы начинаете с модели:
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 --" )
Очевидно, вы заметите, что в моем примере я жестко закодировал все значения. Вы должны улучшить эту логику, используя такие понятия, как текущий год, текущий месяц, возможно, даже извлеките эти значения из репозитория и т. Д., Но для демонстрации этого должно быть достаточно, чтобы поставить вас на правильный путь.