0

モデルにデータが入力されているとき、およびモデルが完全に空のときにアクセスできるビューがあります。

モデルが空の場合、ユーザーが「新規作成」をクリックしたことを意味します。

現時点では、明らかにモデル内に何もないため、NullReferenceException が発生しています。オブジェクトをビューに渡すと、オブジェクトの内部に null 項目が含まれているため、ブラウザがフリーズします。

代わりにこれを行うためのより迅速な/より良い方法はありますか: MyObject myObj = new MyObj(); myObj.InnerObj = new Object(){data = ....}; ...

それが理にかなっていることを願っています:)

4

2 に答える 2

1

NullObjectパターンを使用できます。

MyObjectすべてのプロパティが事前入力され、動作を意図的に実装しないメソッドを持つサブクラスを作成します。例えば:

public sealed class NullObject : MyObject
{
    public object InnerObj { get; private set; }
    public NullObject()
    {
        InnerObj = new Object { ... };
    }
}
于 2012-09-04T11:17:31.517 に答える
0

これは最も賢明な方法ではないかもしれませんが、モデルに依存するコードをビューでラップすることがあります。

@if(Model.Property != null)

したがって、「作成」と「編集」のビューが 1 つだけで、違いがモデル内のプロパティのポピュレーションである場合は、これらのプロパティを「if」でテストし、それに応じてコーディングします。

最終的に実装したより良い解決策 (私が思うに) は、との2 つの値enumで呼び出すです。viewModelでプロパティを作成します。その値を設定または確認し、それに応じてビューをレンダリングします (作成用の入力、表示、または設定方法のいずれか)。これは、作成フローと編集フローを区別するための読みやすい方法です。"EditState"'create''edit'EditState

于 2012-09-04T15:42:44.050 に答える