使用C#在ASP.NET MVC 3中創建級聯下拉列表的最簡單方法我想DropDownList在(使用)優選地在級聯中創建兩個。MVC3RazorC#我想有一個下拉列表,您可以選擇年份,另一個下拉列表,您可以根據所選年份選擇特定的月份。我們說得很簡單。當我在下拉列表“年”中選擇當前年份(即2011年)時,下拉列表“月”將填充當月(即3月)的月份。對于其他情況(其他年份),沒有給出限制。此外,在選擇下拉列表“年”中的任何元素之前,“阻止”下拉列表“月”將是很好的。我已經在互聯網上查找了一些解決方案,使用jQuery甚至是自制方法,但它們都引用了過去版本的MVC,并且一些命令已被棄用MVC3。
1 回答
精慕HU
TA貢獻1845條經驗 獲得超8個贊
一如既往,您從一個模型開始:
public class MyViewModel{
public int? Year { get; set; }
public int? Month { get; set; }
public IEnumerable<SelectListItem> Years
{
get {
return Enumerable.Range(2000, 12).Select(x => new SelectListItem
{
Value = x.ToString(),
Text = x.ToString()
});
}
}}然后一個控制器:
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 [email protected]( x => x.Year, new SelectList(Model.Years, "Value", "Text"), "-- select year --")@Html.DropDownListFor( x => x.Month, Enumerable.Empty<SelectListItem>(), "-- select month --")<script type="text/javascript"> $('#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>
顯然你會注意到在我的例子中我已經硬編碼了所有的值。您應該通過使用當前年份,當前月份等概念來改進此邏輯,甚至可能從存儲庫中獲取這些值等等......但出于演示的目的,這應該足以讓您走上正確的軌道。
- 1 回答
- 0 關注
- 457 瀏覽
添加回答
舉報
0/150
提交
取消
