我是MVC3 Razor的新手。目前,我正面临这个错误“对象引用未设置为对象的实例。”,我不知道这是什么。
在模型中
public List<SelectListItem> CatList { get; set; }
[Display(Name = "Category")]
public string CatID { get; set; }
在控制器
中 public ActionResult DisplayCategory()
{
var model = new CatModel();
model.CatList = GetCat();
return View(model);
}
private List<SelectListItem> GetCat()
{
List<SelectListItem> itemList = new List<SelectListItem>();
itemList.Add(new SelectListItem { Text = "1", Value = "1" });
itemList.Add(new SelectListItem { Text = "2", Value = "2" });
return itemList;
}
在CSHTML中
@using (Html.BeginForm())
{
<table>
<tr>
<td>@Html.LabelFor(c => c.CatID)</td>
<td>@Html.DropDownListFor(c => c.CatID, Model.CatList)</td>
</tr>
</table>
}
感谢您的帮助。
答案 0 :(得分:1)
我怀疑你有一个POST动作,你忘了重新分配视图模型的CatList
属性,这样你在提交表单时就会获得NRE,而不是在最初呈现表单的时候:
public ActionResult DisplayCategory()
{
var model = new CatModel();
model.CatList = GetCat();
return View(model);
}
[HttpPost]
public ActionResult Index(CatModel model)
{
// some processing ...
// since we return the same view we need to populate the CatList property
// the same way we did in the GET action
model.CatList = GetCat();
return View(model);
}
private List<SelectListItem> GetCat()
{
List<SelectListItem> itemList = new List<SelectListItem>();
itemList.Add(new SelectListItem { Text = "1", Value = "1" });
itemList.Add(new SelectListItem { Text = "2", Value = "2" });
return itemList;
}