ASP.NET MVC Child ViewModel验证

时间:2011-08-01 03:01:19

标签: asp.net-mvc

使用ViewModels,我想拆分它们:

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

所以我想呈现SignUpViewModel,但是将SignUpUserViewModel作为POST-action的参数。

你觉得这个合理吗?有哪些方法可以实现这种方法?

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

1 个答案:

答案 0 :(得分:1)

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

E.g。

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

在旁注上,查看您的SignUpViewModel vs SignUpUserViewModel,我认为您可以将它们合并到一个视图模型中。

在说我会说我有时也会采用类似的设置,例如ViewModel和一个孩子FormModel(发布并绑定到FormModel但是我将表格与验证和{{{中的SelectListItems 1}}。所以在上面的例子中,我只是将它们组合成一个FormModel。