我一直在阅读数据注释(即Scott Guthrie's blog post),我很高兴在一个地方拥有验证逻辑的概念。
在提示用户输入与给定类关联的属性的子集时,是否有人能够成功使用此技术?
例如(伪代码)......
public class Person
{
[Required]
public string Name
[Required]
public string Email
}
然后假设您有一个只显示名称的视图的视图。该视图的HttpPost控制器中ModelState.IsValid的值将始终为false,因为电子邮件是必需的并且缺失。
我考虑过拥有单独的模型,一个用于仅需要Name的部分,另一个用于需要Name和Email的部分,但后来我打破了DRY的原则,因为我将进行Name验证逻辑在两个地方。
有什么建议吗?可以让数据注释以这种方式工作吗?我应该只有两个单独的课程吗?也许是CustomValidationAttribute在确定是否需要电子邮件之前检查标志?
答案 0 :(得分:3)
每个视图都应该拥有自己的视图模型。有时你可以重用一些现有的视图模型 - 这是你不能的时间。
我只会在这些属性是一种形式的情况下创建自定义属性,有时两者都是必需的,有时只需要其中一种。如果您有单独的视图,我会创建另一个视图模型。