5

コントローラーを介して null 値を渡すと、View に次のコードで「NullReferenceException was unhandled by user code」というエラーが表示されます。null 値を渡したい状況がありますが、これが発生したときにエラーがスローされるのは望ましくありません。コードを何に変更すればよいですか?

もともと私のコードは次のとおりでした:

@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

私の理解が正しければ、あなたのコレクションは null です。

代わりに空のコレクションを返し、実際のコレクションを公開せずにコレクションが破損するのを防ぐ必要があると言ったように、コレクションは決してnullであってはなりません:

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

コンストラクター内でコレクションを初期化します

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