我对此处提供的接受答案有一个跟进问题:Two models in one view in ASP MVC 3
我有三个模型,类型,原因,位置,我想列出一个视图中的内容。基于上面链接中的答案,我创建了一个新模型,结合了如下所示:
public class Combined
{
public IEnumerable<Place> Place { get; set; }
public IEnumerable<Type> Type { get; set; }
public IEnumerable<Cause> Cause { get; set; }
}
我做了IEnumerable&lt;&gt;因为据我所知,当我只想在foreach循环中列出这些模型的内容时,这就是我想要的。然后我为视图制作了这个控制器:
[ChildActionOnly]
public ActionResult overSightHeadings()
{
Combined Combined = new Combined();
return View(Combined);
}
最后是视图(我只想先从其中一个表中列出):
@model mvcAvvikelser.Models.Combined
@{
Layout = null;
}
<tr>
@foreach (var Type in Model.Type)
{
<th> @Html.DisplayTextFor(ModelItem => Type.Name)</th>
}
</tr>
此代码的问题是它在foreach代码启动时抛出一个null异常。
System.NullReferenceException: Object reference not set to an instance of an object.
所以我不完全确定我在这里做错了,如果它不是IEnumerable,我是否在控制器中错误地初始化了模型?
答案 0 :(得分:1)
应该是这个
[ChildActionOnly]
public ActionResult overSightHeadings()
{
Combined combined = new Combined();
combined.Types = new List<Type>();
combined.Causes = new List<Cause>();
combined.Places = new List<Place>();
return View(Combined);
}
请注意,我已将属性名称更改为复数。这将您的财产定义为集合。
答案 1 :(得分:0)
看起来像
public IEnumerable<Type> Type { get; set; }
未设置
尝试在模型构造函数中初始化此列表 没有IEnumerable 像
List<Type> Type = new List<Type>();