为生成的部分类添加DataAnnotations

7

我有一个Subsonic3 Active Record生成的部分类User,我在另一个部分类中扩展了一些方法。

我想知道是否可以在一个部分类中添加数据注释,其中它在另一个Subsonic生成的部分类中声明了这个成员属性,我尝试过这样做。

public partial class User
{
    [DataType(DataType.EmailAddress, ErrorMessage = "Please enter an email address")]
    public string Email { get; set; }

    ...
}

这个例子会出现“成员已定义”的错误。

我记得以前看到过一个关于使用动态数据和Linq2Sql的示例,跟我现在尝试做的差不多。

3个回答

11

你需要做的是创建一个“伙伴类”,并将数据注释应用到该类中:

[MetadataType(typeof(UserValidation))]
public partial class User 
{
  ...
}

public class UserValidation
{
  [DataType(DataType.EmailAddress, ErrorMessage = "Please enter an email address")]
  public string Email { get; set; }
}

1

此外,这还解释了一种巧妙的方法,让Subsonic甚至为您创建那个伙伴类。http://subsonicproject.com/docs/User_talk:Minus4 - Korayem

0
这并不是直接回答你的问题,但我曾经遇到过同样的问题,而我一直在使用FluentValidation框架{0},目前取得了很大的成功。它非常好用,因为它提供了许多相同的功能,但不会通过在类成员上使用属性来应用验证。验证发生在完全独立的类中,该类作用于正在验证的类(即UserValidator)。
{0}: http://fluentvalidation.codeplex.com/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接