2011-08-01 130 views
1

用的ViewModels工作,我想将它们分割:ASP.NET MVC子视图模型验证

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

所以我想渲染SignUpViewModel但得到SignUpUserViewModel作为后行动的说法。

你觉得这合理吗?有什么方法来实施这种方法?

看起来像DefaultModelBinder不能这样工作:它不理解SignUpUserViewModel是SignUpViewModel的一个属性。所以我看到的一种方式是实现自定义模型绑定器。任何其他?

回答

1

我认为这是合理的。只需将您的帖子操作绑定到SignUpUserViewModel即可。

E.g.

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

在一个侧面说明,看着你SignUpViewModel VS SignUpUserViewModel,我想你可以只将它们组合成一个视图模型。

在说我会说我有时也有类似的设置,你有什么,例如, ViewModel和孩子FormModel(发布和绑定到FormModel我把什么关系如验证的形式,并在FormModel的SelectListItems。所以在上面的例子中,我将它们合并成一个FormModel。