跨多个页面的MVC模型验证

时间:2011-02-03 19:09:35

标签: asp.net-mvc asp.net-mvc-3 validation

对于当前的MVC3项目,我有一个具有多个输入页面的模型。该对象设置了必填字段,但它们位于不同的页面上。这意味着我无法对ModelState.IsValid进行简单的检查。而是在允许用户进入下一个页面之前检查当前页面是否具有所需的所有值。这似乎并不理想。

我不喜欢的一个主要问题是,除了第一个页面之外的页面上包含必填字段意味着已经发生了回发和整体验证失败,因此下一页上的所有必填字段都已标记为错误状态,即使用户从未访问过该页面。

是否有任何最佳实践来验证具有多个输入页面的实体,这些页面上包含必填字段?

2 个答案:

答案 0 :(得分:3)

您应该使用视图模型而不是域模型。大豆可以将您的域模型拆分为向导的每个步骤的多个视图模型。您可能会发现another answer有用。

答案 1 :(得分:0)

这是为什么建议将每个页面使用单独的ViewModel作为最佳做法的一个原因,并且不建议直接在ViewModel中使用您的Entity类。

使用单独的ViewModel,您可以根据需要定制基于属性的验证。它会使事情变得复杂,因为您需要找到一种在ViewModel和您的实体之间进行映射的方法。