2011-08-01 12 views
1

、私はそれらを分割したいと思います:ASP.NET MVC子供のViewModel検証

public SignUpViewModel //for display 
{ 
    public SignUpUserViewModel SignUpUserViewModel { get; set; } //for validation 
    public IEnumerable<SelectListItem> UserTypes {get;set;} 
} 

だから私はSignUpViewModelをレンダリングするが、POSTアクションの引数としてSignUpUserViewModelを取得したいです。

これは妥当なものですか?このアプローチを実装する方法は何ですか?

DefaultModelBinderはこのように動作しません:SignUpUserViewModelがSignUpViewModelのプロパティであることを理解していません。だから私が見る一つの方法は、カスタムモデルバインダーを実装することです。他の?

答えて

1

私はそれが妥当だと思います。投稿アクションをSignUpUserViewModelにバインドしてください。

など。サイドノートでは

[HttpPost] 
public ActionResult Edit(int id, SignUpUserViewModel editForm) 

、あなたのSignUpViewModelSignUpUserViewModelを見て、私はあなただけで1つのビューモデルにそれらを組み合わせることができると思います。

私はあまりにもあなたのものと同様の設定をしていると言います。 ViewModelと子FormModel(投稿とFormModelへのバインド)しかし、私はFormModelのバリデーションとSelectListItemsのようなフォームと何かを置いています。上のケースでは、それらを1つのFormModelに結合するだけです。