gpt4 book ai didi

c# - 使用 C# 在 ASP.NET MVC 3 中创建级联下拉列表的最简单方法

转载 作者:IT老高 更新时间:2023-10-28 12:43:39 26 4
gpt4 key购买 nike

我想使用 MVC3(最好是 Razor)和 cascade 中创建两个 DropDownList C#.

我希望有一个下拉菜单供您选择年份,而另一个下拉菜单供您根据所选年份选择一组特定月份。

让我们简单地说。当我在下拉列表“年”中选择当前年份(即 2011 年)时,下拉列表“月份”将填充当前月份(即三月)之前的月份。对于其他情况(其他年份)没有限制。此外,最好在选择下拉列表“年”中的任何元素之前“阻止”下拉列表“月”。

我已经在互联网上寻找了一些解决方案,使用 jQuery 甚至是自制的方法,但是它们都引用了 MVC 的过去版本,并且在 MVC3 中不推荐使用某些命令.

最佳答案

一如既往地从模型开始:

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()
});
}
}
}

然后是 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
);
}
}

最后是一个 View :

@model AppName.Models.MyViewModel

@Html.DropDownListFor(
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>

显然您会注意到,在我的示例中,我已对所有值进行了硬编码。您应该通过使用诸如当年、当前月份之类的概念来改进此逻辑,甚至可能从存储库中获取这些值等等......但出于演示的目的,这应该足以让您走上正确的轨道。

关于c# - 使用 C# 在 ASP.NET MVC 3 中创建级联下拉列表的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5497524/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com