将DataAnnontations添加到生成的部分类

时间:2009-08-05 10:51:47

标签: validation subsonic subsonic3 data-annotations partial-classes

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

我想知道是否有可能将数据注释添加到一个部分类的成员属性中,并在我尝试过的另一个Subsonic Generated上声明它。

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

    ...
}

该示例给出了“已定义成员”错误。

我想我之前可能已经看过一些关于动态数据和Linq2Sql的例子。

3 个答案:

答案 0 :(得分:10)

您需要做的是创建一个“buddy class”并将数据注释应用于该类:

[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 :(得分:1)

你应该按照Scott Guthrie的说明创建一个好友类 http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

答案 2 :(得分:0)

这不会直接回答你的问题,但我遇到了同样的问题,而不是使用DataAnnotations,到目前为止我一直在使用FluentValidation框架{0}取得了巨大的成功。它工作得很好,因为它提供了许多相同的功能,但不通过使用类成员的属性来应用验证。验证发生在一个完全独立的类中,该类作用于要验证的类(即UserValidator)。

{0}:http://fluentvalidation.codeplex.com/