【发布时间】:2011-01-08 11:05:21
【问题描述】:
我正在使用 DataAnnotations 验证自定义类(LINQ to SQL 自动生成),并使用类顶部的 MetadataType 标记。我喜欢 DataAnnotations,它在简单、常见的场景中运行良好。例如
[MetadataType(typeof(Person_Validation))]
public class Person
但是如果你需要在不同的场景下对类应用两组不同的验证规则呢???
我的情况:有些字段在面向公众的 www 网站上是强制性的,但在内部管理网站上不是强制性的。但是两个站点都有一个“创建新”的相同对象/类的视图。
这就是它变成 DataAnnotations HELL 表面的地方..
我尝试使用两个不同的 ViewModel,每个 ViewModel 都应用了不同的验证,两个类从 Person 继承,每个都应用了不同的验证。但是所有的道路似乎都与 DRY 原则相冲突,你最终会在某个地方完全重新指定底层类结构的所有属性。当您只有一个验证规则集时,您不必这样做。所以它很快就变成了地狱,对于复杂的对象不实用。
这是否可以使用 DataAnnotations?最好的 DRY 架构是什么?
【问题讨论】:
标签: asp.net-mvc-2 validation inheritance data-annotations