shi*_*sei 1 validation asp.net-mvc mvvm data-annotations
我正在使用自定义验证比较用户名.我正在检查它是否与旧值相同,或者如果它通过正则表达式,它是可以接受的,但如果不是,则抛出错误.如果可能,我如何从viewmodel获取UserID?
    [EmailValidation]
    public string Username{ get; set; }
    public int UserID { get; set; }
public class EmailValidationAttribute : ValidationAttribute
    {
         protected override ValidationResult IsValid(object value, ValidationContext validationContext)
         {
             User user= User.getUserByID(UserID); //How to get UserID?
             string username= value.ToString();
             if (user.Username== username || IsValid(username))
                {
                    return ValidationResult.Success;
                }
                else
                {
                    return new ValidationResult("Error");
                }
            }
你可以从用户ID ObjectInstance的ValidationContext.在您的情况下,它将是您的User类的实例.
public class EmailValidationAttribute : ValidationAttribute
{
     protected override ValidationResult IsValid(object value, ValidationContext validationContext)
     {
         UserDto dto = (UserDto)validationContext.ObjectInstance;
         User user= User.getUserByID(dto.UserID);
         string username = value.ToString();
         if (user.Username == username || IsValid(username))
         {
            return ValidationResult.Success;
         }
         else
         {
            return new ValidationResult("Error");
         }
    }
}
如果您想要更通用的东西,可以添加指定属性名称的属性并使用反射来获取值.
| 归档时间: | 
 | 
| 查看次数: | 4476 次 | 
| 最近记录: |