我要疯狂地试图解决这个问题。我对MVC比较新,但对它很熟悉。
我正在尝试在视图上放置一个下拉列表,但在调用DropDownListFor的行上不断获得“对象引用未设置为对象的实例”。这就是我所拥有的:
模型
public class UserModel
{
public class DietObject
{
public int Id { get; set; }
public string Name { get; set; }
}
public IEnumerable<DietObject> DietOptions = new List<DietObject>
{
new DietObject { Id = 0, Name = "Meat" },
new DietObject { Id = 1, Name = "Vegetarian" }
};
[Required]
[StringLength(15)]
[Display(Name = "Diet:")]
public string Diet { get; set; }
}
控制器
[HttpGet]
public ActionResult Registration()
{
return View();
}
查看
<div class="fHeader">
<%: Html.LabelFor(m => m.Diet) %>
</div>
<div class="fText">
<%: Html.DropDownListFor(m => m.Diet, new SelectList(Model.DietOptions, "Id", "Name", Model.DietOptions.First().Id))%>
<%: Html.ValidationMessageFor(m => m.Diet)%>
</div>
错误
在加载页面期间,此行出错:
<%: Html.DropDownListFor(m => m.Diet, new SelectList(Model.DietOptions, "Id", "Name", Model.DietOptions.First().Id))%>
有人让我摆脱了痛苦。非常感谢。
答案 0 :(得分:11)
如果要直接访问视图中的Model
属性(在本例中编写Model.DietOptions
),则需要在控制器中调用View
时传入模型实例:
[HttpGet]
public ActionResult Registration()
{
return View(new UserModel());
}
否则Model
将为null
,您将获得nullrefence excpetion。