当我的模型为null时,如何在View中的foreach循环中避免NullReferenceException?

时间:2012-04-28 00:01:33

标签: asp.net-mvc foreach

当我通过控制器传入空值时,我的视图中出现“NullReferenceException未被用户代码处理”错误,以下代码。在某些情况下,我想传入一个空值,但我不希望在发生这种情况时抛出错误。我应该将代码更改为什么?

最初我的代码是:

@foreach (var item in Model.MyModelStuff)
{
    <tr>
        <td>
                @Html.DisplayFor(modelItem => item.Bla.Title)
        </td>
    <tr>
}

我尝试过以下操作但没有成功:

@foreach (var item in Model.MyModelStuff.Where( item => item.MyModelStuff != null))
etc. . . 

如何更改代码以便在不抛出错误的情况下处理null?我读过我可能需要返回我的模型的空集合(?),我将如何去做 - 如果它确实是必要的事情?

2 个答案:

答案 0 :(得分:7)

老实说,我认为null模型是一个糟糕的选择。但如果你坚持,只需添加if支票:

@if (Model != null) {
    foreach (var item in Model.MyModelStuff)
    {
        <tr>
            <td>
                    @Html.DisplayFor(modelItem => item.Bla.Title)
            </td>
        <tr>
    }
}

答案 1 :(得分:6)

如果我的理解是正确的,那么你的收藏是空的。

一个集合永远不应该为null,就像你说你应该返回一个空集合而防止你的集合被破坏而不暴露真正的集合:

public IList<Employee> Employees
{
    get; 
    private set;
}

并在构造函数

中初始化您的集合
this.Employees = new List<Employee>();