我正在使用ValidationAttribute实现自定义验证器:
public class CustomAttribute : ValidationAttribute
{
protected override ValidationResult IsValid (object value, ValidationContext validationContext)
{
//...
}
}
但是要运行验证,我需要访问一个变量,该变量是应用程序基本控制器的一部分(它与当前登录的用户有关)。我怎样才能抓住它?
答案 0 :(得分:0)
如果您可以使用变量填充模型属性,则可以执行此操作:
型号:
[CustomAttribute("MyVariableAsModelProperty", "Failed Validation!")
public string ValidateThis{get; set;}
public string MyVariableAsModelProperty{get; set;}
您的自定义验证器:
public class CustomAttribute : ValidationAttribute
{
string otherPropertyName;
public CustomAttribute(string otherPropertyName, string errorMessage)
: base(errorMessage)
{
this.otherPropertyName = otherPropertyName;
}
protected override ValidationResult IsValid (object value, ValidationContext validationContext)
{
var otherPropertyInfo = validationContext.ObjectType.GetProperty(this.otherPropertyName);
var referenceProperty = (string)otherPropertyInfo.GetValue(validationContext.ObjectInstance, null);
//...
}
现在您要比较2个值:value
是要验证的模型属性,referenceProperty
是变量。