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

Jas*_*onH 6 asp.net-mvc html.dropdownlistfor asp.net-mvc-4 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; }
}
Run Code Online (Sandbox Code Playgroud)

调节器

    [HttpGet]
    public ActionResult Registration()
    {
        return View();
    }
Run Code Online (Sandbox Code Playgroud)

视图

    <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>
Run Code Online (Sandbox Code Playgroud)

错误

在页面加载期间,它在此行上出错:

<%: Html.DropDownListFor(m => m.Diet, new SelectList(Model.DietOptions, "Id", "Name", Model.DietOptions.First().Id))%>
Run Code Online (Sandbox Code Playgroud)

有人让我摆脱了痛苦.非常感激.

nem*_*esv 11

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

[HttpGet]
public ActionResult Registration()
{
    return View(new UserModel());
}
Run Code Online (Sandbox Code Playgroud)

否则Model将是null,你将得到一个nullrefence excpetion.

  • 我获得当天的n00b奖,我已经过期了.我会在几分钟后让它标记为已回答. (2认同)