所以我有一个简单的自定义验证属性:
public class MyCustomValidator : CustomValidationAttribute
{
public bool IsLive { get; set; }
public MyCustomValidator()
{
//Service locator stuff
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
return ValidationResult.Success;
}
}
MyCustomValidor 继承了下面的类,因为我所有的自定义验证器都需要访问它。
public abstract class CustomValidationAttribute : ValidationAttribute
{
public Type MessageResource { get; set; }
public string MessagePrefix { get; set; }
}
然后我在我的 viewModel 中调用它,它看起来有点像这样:
public class MyViewModel
{
private static bool IsWebLive;
[MyCustomValidator(IsWebLive = IsWebLive, MessageResource = typeof(MyResourceFile), MessagePrefix = "ErrorMessage")]
public string SampleValue { get; set; }
}
在我将私人传递给IsWebLive
我的地方,validator
我收到一个错误,说an attribute argument must be a constant expression, typeof expression or array.
我知道我可能做错了。但是我怎么能把这个布尔值传递给验证器,因为我无法访问系统中其他任何地方的设置;
我也不能私下设置IsLive/MessageResource/MessagePrefix
,MyCustomValidator
因为我的自定义验证器的东西是通用的,MessagePrefix
并且MessageResource
可以在我的所有自定义验证器中访问。