3

ASP.NET MVCは、他のモデルクラスを継承するモデルクラスがある場合に、モデルバインディングを機能させる簡単な方法を提供しますか?

私のシナリオでは、に強く型付けされたビューがありますList<Person>

Person、つまりPersonTypeOneとを継承するクラスがいくつかありますPersonTypeTwo

これらのクラス名と一致する名前を持つ(そしてそれぞれのモデルのプロパティのフォーム要素をレンダリングする)3つの強く型付けされた部分ビューがあります。

これは、メインビューで次のコードを使用できることを意味します。

<% for(int i = 0; i < Model.Count; i++)
   { 
       Html.RenderPartial(Model[i].GetType().Name, Model[i]);
   } %>

これは、ユーザーがフォームを送信する場合を除いて、関連するコントローラーアクションメソッドが、、およびのリストではなく、を取得する場合を除いて、うまく機能しList<Person>ます。PersonPersonTypeOnePersonTypeTwo

PersonTypeOneフォームの送信には、デフォルトのモデルバインダーにおよびPersonTypeTwoクラスのインスタンスを作成するように指示するのに十分な情報が含まれていないため、これはほぼ予想どおりです。

それで、デフォルトのモデルバインダーからそのような機能を取得する方法はありますか?

4

1 に答える 1

4

入力にバインドするために、個別のモデルを作成する必要があります。ViewModelsとEditModelsは本当に別個の責任であるため、独自のオブジェクトに値します。

于 2010-06-01T16:45:28.103 に答える