使用attribute / dataannotation对asp.net表单进行服务器/客户端输入验证

时间:2010-08-03 21:12:06

标签: asp.net data-annotations validation

我正在玩asp.net mvc 2的DataAnnotation验证。它很好地连接到客户端验证。我真的很喜欢我可以定义一组规则并能够在客户端和服务器端使用它。

我想知道是否可以使用asp.net表单。 以下代码片段显示了它是如何完成的,并且在创建对象后,它可以在服务器端进行简单的数据验证。

但是,我想在客户端(jQuery或asp.net的javascript库)重用验证检查,所以我不必在服务器/客户端上定义2组验证定义。

[DataMember, DisplayName("Prop A Description")]
[Required(ErrorMessage = "PropertyA is required.")]
[RegularExpression(@"^[0-9]*(\.)?[0-9]+$", ErrorMessage = "PropertyA format invalid")]
public string Property { get; set; }

我在基类上创建了以下方法来进行验证

    public bool IsValid()
    {
        bool result = true;

        PropertyInfo[] properties = this.GetType().GetProperties();

        foreach (PropertyInfo property in properties)
        {

            //Get all the custom validation attributes
            var cusAttributes = property.GetCustomAttributes(typeof(ValidationAttribute), true).OfType<ValidationAttribute>();

            foreach (var attribute in cusAttributes)
            {
                //validate individual attribute base on it's custom attribute.
                Boolean isValid = attribute.IsValid(property.GetValue(this, null));

                //if attribute is not valid, log it to the ErrorMessage Collection
                if (!isValid)
                {
                    this.ErrorMessages.Add(new ErrorSummary() { ErrorMessage = attribute.ErrorMessage });
                    result = false;
                }
            }

        }
        return result;
    }

0 个答案:

没有答案