属性子集的数据注释

时间:2010-09-01 13:46:11

标签: .net asp.net-mvc validation data-annotations

我一直在阅读数据注释(即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在确定是否需要电子邮件之前检查标志?

1 个答案:

答案 0 :(得分:3)

每个视图都应该拥有自己的视图模型。有时你可以重用一些现有的视图模型 - 这是你不能的时间。

我只会在这些属性是一种形式的情况下创建自定义属性,有时两者都是必需的,有时只需要其中一种。如果您有单独的视图,我会创建另一个视图模型。