gpt4 book ai didi

asp.net-mvc - ASP MVC自定义验证如何获取其他值

转载 作者:行者123 更新时间:2023-12-03 10:20:12 25 4
gpt4 key购买 nike

我正在使用自定义验证比较用户名。我正在检查它是否与旧值相同,或者是否通过了正则表达式,这是可以接受的,但是如果不是则抛出错误。如果可能,如何从ViewModel获取用户ID?

    [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");
}

}

最佳答案

您可以从ValidationContextObjectInstance获取用户ID。在您的情况下,它将是您的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");
}

}
}

如果您想要更通用的东西,则可以添加指定属性名称的属性,并使用反射来获取值。

关于asp.net-mvc - ASP MVC自定义验证如何获取其他值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14818893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com