MVC4 DropDownListFor对象引用未设置为对象的实例

时间:2014-02-02 06:27:53

标签: asp.net-mvc asp.net-mvc-4 html.dropdownlistfor dropdownlistfor

我要疯狂地试图解决这个问题。我对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))%>

有人让我摆脱了痛苦。非常感谢。

1 个答案:

答案 0 :(得分:11)

如果要直接访问视图中的Model属性(在本例中编写Model.DietOptions),则需要在控制器中调用View时传入模型实例:

[HttpGet]
public ActionResult Registration()
{
    return View(new UserModel());
}

否则Model将为null,您将获得nullrefence excpetion。