【问题标题】:Razor DropDownList剃刀下拉列表
【发布时间】:2012-05-05 18:11:24
【问题描述】:

我想添加几个月的 dropdoenlist。我想要选择像一月/二月这样的值。我已经创建了一个这样的操作:

     public DropDownList  GetMyMonthList()
     {
        DropDownList MyddlMonthList = new DropDownList();
        DateTime month = Convert.ToDateTime("1/1/2000");
        for (int i = 0; i < 12; i++)
        {

            DateTime NextMont = month.AddMonths(i);
            ListItem list = new ListItem();
            list.Text = NextMont.ToString("MMMM");
            list.Value = NextMont.Month.ToString();
            MyddlMonthList.Items.Add(list);
        }
        return MyddlMonthList;

    }

我叫它

  ViewBag.months = pm.GetMyMonthList();

在我看来

  @Html.DropDownListFor(model => model.rent_month,new    SelectList(ViewBag.months          as        System.Collections.IEnumerable, "Text","value"),
        "Select Month")

它给出错误值不能为空。 参数名称:items

我可能犯了一个愚蠢的错误。我是asp.net mvc3 的新手。请指出我的错误....提前谢谢

【问题讨论】:

    标签: .net asp.net-mvc-3 razor cultureinfo selectlist


    【解决方案1】:

    从错误消息来看,发生的事情是从 DropDownList 到 IEnumerable 的转换通过返回 null 静默失败。我建议将 GetMyMonthList 更改为返回 IEnumerable,然后将其直接传递给 SelectList 的构造函数。

    public IEnumerable<SelectListItem> GetMyMonthList()
    {
        var MyddlMonthList = new List<SelectListItem>();
        DateTime month = Convert.ToDateTime("1/1/2000");
        for (int i = 0; i < 12; i++)
        {
            DateTime NextMont = month.AddMonths(i);
            var list = new SelectListItem();
            list.Text = NextMont.ToString("MMMM");
            list.Value = NextMont.ToString("MMMM");
            MyddlMonthList.Add(list);
        }
        return MyddlMonthList;
    }
    

    编辑

    您还可以从 CultureInfo 获取月份名称。

    public IEnumerable<SelectListItem> GetMyMonthList()
    {
        return CultureInfo.CurrentCulture.DateTimeFormat.MonthNames
            .Select(m => new SelectListItem() { Text = m, Value = m });
    }
    

    【讨论】:

    • 感谢它的工作。但是选择后列表的数据会是什么?
    • 它给出了 2 月的价值,它给出了 2。这个代码有什么变化可以给我像 2 月一样的价值??????
    • 知道了……看我的编辑。您可以从 System.Globalization.CultureInfo 获取月份名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多