使用MVC4在编辑视图中从数据库填充DropDown

时间:2015-07-28 19:09:35

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

我是MVC的新手,并尝试在视图模型生成的“创建”视图中填充下拉列表,但它返回错误,表示对象引用不是对象的实例。下面是我的代码:

控制器代码:

public ActionResult Create()
{
    return View(new AddRecipeViewModel());
}

型号代码:

public class DifficultyLevel
    {
        [Key]
        public int Id { get; set; }
        public string Difficulty { get; set; }
    }

public class AddRecipeViewModel

    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public virtual ICollection<RecipeReview> Reviews { get; set; }
        public virtual IEnumerable<DifficultyLevel> Difficulty { get; set; }

    }

查看:

<div>
    <select>
        @foreach (var item in Model.Difficulty)
        {
            <option>@item.Difficulty</option>
        }
    </select>

</div>

这有一个简单的解决方法吗?因为随着我的进展,我会在这里添加更多的下降。

谢谢, 维沙尔

1 个答案:

答案 0 :(得分:0)

不确定您是否需要在视图模型中使用virtual ..这通常仅适用于实体模型。但无论如何,尝试向AddRecipeViewModel添加一个构造函数,并将集合设置为等于空列表,这样它们就不会为空。

public class AddRecipeViewModel
{
    public AddRecipeViewModel()
    {
         Reviews = new List<RecipeReview>();
         Difficulty = new List<DifficultyLevel>();
    }

    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<RecipeReview> Reviews { get; set; }
    public virtual IEnumerable<DifficultyLevel> Difficulty { get; set; }
}