0

我对此处给出的已接受答案有一个后续问题: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<> 因为据我所知,当我只想在 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 代码启动时抛出了一个空异常。

System.NullReferenceException: Object reference not set to an instance of an object.

所以我不完全确定我在这里做错了什么,它应该不是 IEnumerable,我是否在控制器中错误地初始化了模型?

4

2 回答 2

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);
}

请注意,我已将属性名称更改为复数。这将您的财产定义为收藏。

于 2012-09-19T07:54:34.190 回答
0

看起来像

 public IEnumerable<Type> Type { get; set; }

未设置

尝试在没有 IEnumerable 的模型构造函数中初始化此列表

 List<Type> Type = new List<Type>();
于 2012-09-19T07:48:50.967 回答