亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用C#在ASP.NET MVC 3中創建級聯下拉列表的最簡單方法

使用C#在ASP.NET MVC 3中創建級聯下拉列表的最簡單方法

婷婷同學_ 2019-07-26 11:21:39
使用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>

顯然你會注意到在我的例子中我已經硬編碼了所有的值。您應該通過使用當前年份,當前月份等概念來改進此邏輯,甚至可能從存儲庫中獲取這些值等等......但出于演示的目的,這應該足以讓您走上正確的軌道。


查看完整回答
反對 回復 2019-07-26
  • 1 回答
  • 0 關注
  • 457 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號