我是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>
这有一个简单的解决方法吗?因为随着我的进展,我会在这里添加更多的下降。
谢谢, 维沙尔
答案 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; }
}