내장 된 ASP MVC 유효성 검사는 동일한 컨트롤러의 다른 동작에 대해 다르게 동작 할 수 있습니까? 예를 들어, 사용자 컨트롤러가 있고 생성, 편집 및 기타 작업과 같은 작업이 있습니다. 따라서 모델 사용자의 경우 특성 Username의 고유성이 검증됩니다. 동일한 사용자 이름을 가진 사용자가 있으면 오류 사용자 이름이 이미 표시됩니다. 따라서 편집 작업에 대해 동일한 유효성 검사기를 사용하면 사용자를 편집하는 동안 "username already present"오류가 발생합니다. 아무도이 문제를 해결할 방법이 있는지 말해 줄 수 있습니까? 참조 용으로 유효성 검사기 코드를 붙여 넣습니다.컨트롤러 동작에 특정한 asp mvc 유효성 검사?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace Models
{
[MetadataType(typeof(AdmiUserMetadata))]
public partial class AdminUser
{
public class AdmiUserMetadata
{
[Required(ErrorMessage = "Required Field")]
public string Id { get; set; }
[Required(ErrorMessage = "Required Field")]
[RegularExpression("[\\S]{6,}", ErrorMessage = "Must be at least 6 characters.")]
[Username(ErrorMessage = "Username already taken")]
public string Username { get; set; }
[Required(ErrorMessage = "Required Field")]
[RegularExpression("[\\S]{6,}", ErrorMessage = "Must be at least 6 characters.")]
public string Password { get; set; }
[Required(ErrorMessage = "Required Field")]
public string Name { get; set; }
[Required(ErrorMessage = "Required Field")]
[RegularExpression("^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$", ErrorMessage ="Invalid E-mail ID")]
public string Email { get; set; }
[Required(ErrorMessage = "Required Field")]
[RegularExpression("(Active|Disabled)", ErrorMessage = "Select the status of User")]
public string Status { get; set; }
[Required(ErrorMessage = "Required Field")]
[RegularExpression("^[1-9]", ErrorMessage = "Select the group of User")]
public string Group { get; set; }
}
}
public class UsernameAttribute : ValidationAttribute
{
IUserRepository _repository = new UserRepository();
public override bool IsValid(object value)
{
if (value == null)
return true;
if (_repository.IsUsernamePresent((string)value))
{
return false;
}
return true;
}
}
}
아마도 당신은 아마 ... 나는 속성 유효성 검사의 모든 요점을 가지고 있다고 생각합니다. 잘못 ... 어쨌든 머리를 주셔서 감사합니다 ... – Johnson