在ASP.NET MVC 3中建立級聯下拉式選單時,可能會遇到過時的解決方案或在該版本中已棄用的命令,這可能會讓人不知所措。本指南提供了一種逐步方法,使用C#建立級聯下拉式選單,確保與MVC 3相容。
任何MVC應用程式的基礎都是模型。在本例中,我們將建立一個名為MyViewModel的模型來表示下拉式選單的資料:
<code class="language-csharp">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() }); } } }</code>
控制器充當模型和視圖之間的中介。在這裡,我們定義一個操作來使用年份填充第一個下拉式選單,另一個操作根據所選年份提供月份:
<code class="language-csharp">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 ); } }</code>
視圖顯示應用程式的使用者介面。在本例中,我們使用Razor語法定義兩個下拉式選單:一個用於選擇年份,另一個用於選擇月份:
<code class="language-csharp">@model AppName.Models.MyViewModel @Html.DropDownListFor( x => x.Year, new SelectList(Model.Years, "Value", "Text"), "-- 选择年份 --" ) @Html.DropDownListFor( x => x.Month, Enumerable.Empty(), "-- 选择月份 --" ) <script> $('#Year').change(function () { var selectedYear = $(this).val(); if (selectedYear != null && selectedYear != '') { $.getJSON('@Url.Action("Months")', { year: selectedYear }, function (months) { var monthsSelect = $('#Month'); monthsSelect.empty(); $.each(months, function (index, month) { monthsSelect.append($('<option>', { value: month.value, text: month.text })); }); }); } }); </script></code>
這段JavaScript程式碼在更改所選年份後觸發對控制器操作Months的AJAX呼叫。然後,它使用傳回的JSON資料使用適當的月份填充第二個下拉式選單。
這個方法提供了一種清晰簡潔的方法,可以使用C#在ASP.NET MVC 3中實作級聯下拉式選單。透過遵循這些步驟,您可以輕鬆建立使用者友好且反應迅速的介面來管理分層資料。
以上是如何使用 C# 在 ASP.NET MVC 3 中實作級聯下拉選單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!