2
我想爲重複的用戶名和電子郵件創建自定義驗證。模式是這樣:重複自定義驗證不起作用
public class RegisterModel
{
[Required(ErrorMessage = "Username is empty")]
[StringLength(100, ErrorMessage = "Minimum 5 symbol", MinimumLength = 5)]
[CustomValidation(typeof(RegisterModel), "ValidateDuplicateUsername")]
[RegularExpression(@"^[a-zA-Z0-9]+$", ErrorMessage = "Username invalid")]
public string UserName { get; set; }
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Enter valid e-mail")]
[Required(ErrorMessage = "E-mail is empty")]
[DataType(DataType.EmailAddress)]
[CustomValidation(typeof(RegisterModel), "ValidateDuplicateEmail")]
public string Email { get; set; }
[Required(ErrorMessage = "Password is empty")]
[StringLength(100, ErrorMessage = "Minimum 6 symbol", MinimumLength = 6)]
[DataType(DataType.Password)]
public string Password { get; set; }
[DataType(DataType.Password)]
[Compare("Password", ErrorMessage = "Password not same")]
public string ConfirmPassword { get; set; }
public static ValidationResult ValidateDuplicateUsername(string username)
{
if (username != null)
{
bool isValid = true;
MembershipUserCollection users = Membership.GetAllUsers();
foreach (MembershipUser item in users)
{
if (item.UserName.ToUpper().Equals(username.ToUpper()))
{
isValid = false;
}
}
if (isValid)
{
return ValidationResult.Success;
}
else
{
return new ValidationResult("Username exists");
}
}
else return new ValidationResult("Minimum 5 symbol");
}
public static ValidationResult ValidateDuplicateEmail(string email)
{
if (email != null)
{
bool isValid = true;
MembershipUserCollection users = Membership.GetAllUsers();
foreach (MembershipUser item in users)
{
if (item.Email.ToUpper().Equals(email.ToUpper()))
{
isValid = false;
}
}
if (isValid)
{
return ValidationResult.Success;
}
else
{
return new ValidationResult("Username exists with this email");
}
}
else return new ValidationResult("Enter valid e-mail");
}
}
所有驗證工作,但我的自定義驗證 - ValidateDuplicateUsername和ValidateDuplicateEmail無法正常工作。這裏有什麼問題?
工作在哪裏?客戶端或服務器端?客戶端要求你的屬性實現'IClientValidatable'。 – jgauffin
客戶端。因爲「用戶名爲空」,「最少5個符號」等等,我得到了其他的驗證錯誤。 –