投稿時に別のViewModelに自動バインドしたいViewModelがあります。Mvc 3モデルの自動バインド
例:私は、ディスプレイ/目的をレンダリングするための
public class ViewModelA{
public string Stuff {get;set;}
}
public class ViewModelB{
public string MyStuff {get;set;}
.
.
.
}
を持っている場合、それははるかに簡単オブジェクトだとインタラクティブなビューを作成することは、高価な命題であるので、それゆえ、それはうまくいけばはるかに再利用できますので、私は、部分的にはViewModelAにバインドします。
しかし、の投稿のすべてのフォーム情報が必要です。私はViewModelAとViewModelBの両方を取るコントローラのアクションを広げることができ、次にViewModelAプロパティをViewModelBに割り当てるために追加のロジックを実行することができますが、これを行うためのより宣言的な方法がありますか?
私はこのようないくつかの属性を使用して、私はViewModelAにタグを付けることができれば、私は思ったんだけど推測:
[Bind(Prefix = "ViewModelB", Include = "MyStuff")]
私はアクションレベルでそれを行うことができます知っているが、私はViewModelにレベルでこのロジックを注入することができます?
さらに、RazorがCQRSのアプローチに従うといいでしょう。例えば。レンダリング
Html.TextBoxFor(target => target.Property, model => model.Property2)
だからその上、テキストボックスはProperty2値で初期化されますが、ポストの上に、それがtarget.Propertyに掲載されます。
私はそれを知る方法の1つになると思っていましたが、私はクラス継承とIsA関係を一般的に嫌います。また、3つ以上のViewModelがあり、そのうち2つがViewModelBに移動したい場合はどうなりますか?または、ViewModelAに関連性のない「表示」プロパティがいくつかある場合はどうなりますか?相続は彼らが価値があるよりも頭痛です。私はViewModel POCOを保持して、できるだけ疎結合したい。 – Alwyn
クラスの継承を拒否しますか?なぜ.NETを使用していますか? – cadrell0
@ cadrell0クラス継承で1つのViewModelにマップする必要がある2つの異なるビューモデルをどのように扱いますか?そして、ターゲットViewModelを不要なプロパティからきれいに保つにはどうしますか?ヒント:できません。 – Alwyn