2011-02-03 75 views
1

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

一个我不喜欢的主要事情是,具有比第一其它页面上的必填字段意味着回传和全面验证失败已经发生了所以接下来的页面上的任何所需的字段已标记的事实即使用户从未去过该页面,也处于错误状态。

是否有任何验证具有多个输入页面的实体的最佳实践?

回答

3

您应该使用视图模型而不是您的域模型。大豆你可以将你的领域模型分成向导的每个步骤的多个视图模型。这里的another answer你可能会觉得有用。

+0

+1。我认为视图模型是MVC中较少理解的构造之一,但总体而言是与DDD相关的范例。很多人试图强迫他们的实体扮演这两种角色,而且这往往比非实体方法更令人头疼。 – 2011-02-03 19:14:58

0

这是为什么建议为每个页面使用单独的ViewModel作为最佳实践的原因之一,并且不鼓励在ViewModel中直接使用实体类。

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

+0

太棒了,谢谢。这看起来正是我所需要的。 – 2011-02-03 19:19:10