在视图中检查null时,为什么会出现NullReferenceException

时间:2011-10-13 14:15:44

标签: c# asp.net-mvc-3

我有以下代码向用户显示帐号列表。

查看型号:

有时列表将为null,因为没有要显示的帐户。

public class AccountsViewModel
{
    public List<string> Accounts { get; set; }
}

查看:

@model AccountsViewModel

using (@Html.BeginForm())
{
    <ul>
        @*if there are accounts in the account list*@
        @if (Model.Accounts != null)
        {
            foreach (string account in Model.Accounts)
            {
                <li>Account number* <input type="text" name="account" value="@account"/></li>
            }
        }

        @*display an additional blank text field for the user to add an additional account number*@
        <li>Account number* <input type="text" name="account"/></li>

    </ul>


    ...
}

所有内容编译都很好,但是当我运行页面时,我会在行中找到NullReferenceException was unhandled

@if (Model.Accounts != null)

为什么我在检查空引用时得到空引用异常?我错过了什么?

4 个答案:

答案 0 :(得分:10)

因为Modelnull而不是属性Accounts

您还应该检查Model是否 null

实施例

if(Model != null && Model.Accounts != null)
{

}

答案 1 :(得分:3)

显然Model为空,您必须将条件更改为

Model != null && Model.Accounts != null

答案 2 :(得分:2)

您的模型可能是null

@if (Model != null && Model.Accounts != null)

答案 3 :(得分:1)

如果没有看到Action方法,我假设您的Model为null(这是您在该行上获得该错误的唯一方法)。只需要额外检查:

if(Model != null && Model.Accounts != null)