5

当我通过控制器传入空值时,我的视图中出现“用户代码未处理 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 而不会引发错误?我读过我可能需要返回我的模型的一个空集合(?),我将如何去做 - 如果这确实是必要的事情?

4

2 回答 2

7

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

@if (Model != null) {
    foreach (var item in Model.MyModelStuff)
    {
        <tr>
            <td>
                    @Html.DisplayFor(modelItem => item.Bla.Title)
            </td>
        <tr>
    }
}
于 2012-04-28T00:04:02.310 回答
7

If my understanding is correct your collection is null.

A collection should never be null, like you said you should return an empty collection instead and prevent your collection to be corrupted not exposing the real collection:

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

And initialize your collection inside the constructor

this.Employees = new List<Employee>();
于 2012-04-28T00:11:49.800 回答