2

我有一个带有以下代码的 mvc 应用程序:

public class Register
{
[RegularExpression(@"^(?=.*\d)(?=.*[a-zA-Z]).{7,14}$", ErrorMessage = "Password is not in      proper format")]
public string Password{ get; set; }
}

它所做的是验证密码是否包含至少 7-14 个字符、至少 1 个数字和 1 个大写字母。

另一个要求是它不应与电子邮件地址相同。

我怎样才能做到这一点?在这种情况下似乎[Compare(Email)]不可能?

提前致谢!

4

2 回答 2

2

使用 MVC 万无一失的验证,您可以编写

[NotEqualTo("EmailAddress", ErrorMessage="Passwords must be different that EmailAddress")]
public string Password{ get; set; }

http://foolproof.codeplex.com/

于 2013-07-25T10:43:12.467 回答
1

最简单的方法:创建自己的继承 CompareAttribute 的属性,并覆盖IsValid方法。完整的代码如下:

    public class NotEqualTo: CompareAttribute
    {
        public NotEqualTo(string otherProperty) : base(otherProperty)
        {
        }
        protected override System.ComponentModel.DataAnnotations.ValidationResult IsValid(object value,
                                                                                          System.ComponentModel.
                                                                                              DataAnnotations.
                                                                                              ValidationContext
                                                                                              validationContext)
        {
            PropertyInfo property = validationContext.ObjectType.GetProperty(this.OtherProperty);
            if (property == (PropertyInfo) null)
            {
                return
                    new ValidationResult(string.Format((IFormatProvider) CultureInfo.CurrentCulture,
                                                       "Property {0} does not exist", new object[1]
                                                           {
                                                               (object) this.OtherProperty
                                                           }));
            }
            else
            {
                object objB = property.GetValue(validationContext.ObjectInstance, (object[]) null);
                if (object.Equals(value, objB))
                    return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
                else
                    return (ValidationResult) null;
            }
        }
    }
于 2013-07-25T10:44:35.363 回答