1

モデルを編集するためのビューを作成しました。ビューは強く型付けされており、ある時点で次のようにします。

    @for (int i = 0; i < Model.Risks.Count; i++)
    {   
        @Html.EditorFor(m => Model.Risks[i]))
    }

これで、コレクションがnullでない場合、つまり既存のエンティティを編集する場合、これは正常に機能します。

ただし、これと同じビューを使用して新しいエンティティを作成したいと思います。ただし、コレクションがnullであるため、クラッシュします。エディターがレンダリングされることを確認するにはどうすればよいですか?

4

2 に答える 2

0

1 つの方法は、モデルが新しいときのデフォルトを設定することです。

public IList<Risk> Risks {
  get {
      return IsNew() ? DefaultRisks() : risks;
  }
  set {
    risks = value;
  }
}

プロパティ IsNew を持つことは、たとえばボタン テキスト「作成」または「保存」などのビューで使用できます。

ビュー内の if ステートメントが多すぎる場合は、それらを分離することをお勧めします。

そうは言っても、同じプレゼンテーション モデルを持つことは悪いことではありません。

于 2013-02-07T13:55:21.980 に答える
0

EditorTemplate を使用して、ビュー内のループを取り除くだけです。

@Html.EditorFor(m => m.Risks)

ASP.NET MVC は、コレクションが空で何もしないかどうかを実行時に検出します。または、値がある場合は、コレクションの各要素に対応するエディター テンプレートを自動的にレンダリングします。この方法では、一石二鳥です。コードははるかに簡単で、テストを行う必要はありません => このタスクは ASP.NET MVC フレームワークに任せることになります。

于 2013-02-07T14:11:09.453 に答える