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 개의 기호"등의 나머지 유효성 검사 오류가 발생합니다. –