2

Castle Validator 使用属性来指定验证规则。您如何将这些与 Subsonic 生成的类(或任何您无法定义属性的类)连接起来?有没有办法在不使用属性方法的情况下以编程方式指定验证规则?

4

2 回答 2

2

我认为最好的方法是使用MetadataType. 这是一个DataAnnotations让你的班级有一对或类似的东西。我不知道如何更好地解释它,让我们来看看样本:

您首先需要将此指令添加到您的代码中:

using System.ComponentModel.DataAnnotations;

他们应该创建您生成的类的部分类,其属性指定该类具有MetadataType


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

然后使用城堡验证创建元数据类:


public class UserMetadata
{
    [ValidateNonEmpty]
    [ValidateLength(6, 24)]
    public string Username { get; set; }

    [ValidateNonEmpty]
    [ValidateLength(6, 100)]
    [ValidateEmail]
    public string Email { get; set; }

    [ValidateNonEmpty]
    [ValidateLength(6, 24)]
    public string Password { get; set; }
}
于 2009-05-02T03:24:13.607 回答
0

有几种方法可以做到这一点 - 属性是摩擦最小的选项,但显然不能很好地处理生成的代码或在代码中更好地表达的多个属性的验证。

请查看以下链接以获取有关如何执行此博客文章的一些指示:Castle Validator Enhancements

如果您查看城堡源代码,这些是一些很好的起点:

于 2009-03-30T22:12:34.467 回答