我有一个简单的模型
public class MyModel
{
public string Month{ get; set;}
public IEnumerable<SelectListItem> Months
{
get
{
return new[] { new SelectListItem{ Text="Jan",Value="1" } };
}
}
}
我想在DropDownListFor
这样的页面上显示这个
@model ViewModels.MyModel
@Html.DropDownListFor(m=>m.Month, new SelectList(Model.Months,"Text","Value"))
当我构建并运行它时,我得到并且错误“对象引用未设置为对象的实例”。
如果我的班级中有一个属性是一个简单的字符串,我可以使用LabelFor(m=>m.TestString)
并且它显示正确,所以我知道模型存在。
我错过了什么?
TIA
答案 0 :(得分:1)
它应该有用。 m=>m.Month
和 在控制器上
MyModel model=new MyModel();
return View(model);
答案 1 :(得分:1)
您的类型不匹配。在您的模型中,您需要执行以下操作:
public SelectList Months
{
get
{
var monthNames = DateTimeFormatInfo.CurrentInfo.MonthNames.Take(12).ToList();
return new SelectList(monthNames.Select(m => new {Id = monthNames.IndexOf(m) + 1, Name = m}).ToList(), "Id", "Name");
}
}
然后在您看来,您所需要的只是:
@Html.DropDownListFor(m => m.Month, Model.Months)
还要确保您的模型已实例化而不是null。