投稿時に別のViewModelに自動バインドしたいViewModelがあります。
例えば。私が持っている場合
public class ViewModelA{
public string Stuff {get;set;}
}
public class ViewModelB{
public string MyStuff {get;set;}
.
.
.
}
表示/レンダリングの目的で、パーシャルを ViewModelA にバインドする必要があります。これは、インタラクティブなビューを作成することはコストのかかる提案であるため、はるかに単純なオブジェクトであり、再利用性が高くなることを願っています。
ただし、 postのページのすべてのフォーム情報が必要です。コントローラー アクションを拡張して ViewModelA と ViewModelB の両方を取得し、追加のロジックを実行して ViewModelA プロパティを ViewModelB に割り当てることができると思いますが、これを行うためのよりクリーンで宣言的な方法はありますか?
次のような属性を使用して、ViewModelA にタグを付けることができるかどうか疑問に思っていると思います。
[Bind(Prefix = "ViewModelB", Include = "MyStuff")]
アクション レベルで実行できることはわかっていますが、このロジックを ViewModel レベルで挿入できますか?
また、Razor がより CQRS のアプローチに従っているとよいでしょう。例えば。
Html.TextBoxFor(target => target.Property, model => model.Property2)
そのため、レンダリング時にテキストボックスは Property2 値で初期化されますが、投稿時には target.Property に投稿されます。