viewmodel 有许多字符串属性Sample
,如下所示。我的要求是根据我的视图模型中的布尔标志显示不同的验证消息。该标志是 IsProposer
如下所述的属性:
[SampleAttribute(true, "bla prop", "foo add driver")]
public string Sample { get; set; }
public bool IsProposer { get; set; }
我想创建一个验证属性,这样我就可以将它放在我所有的字符串属性上(需要验证)。然后根据该布尔标志的值,我将相应地传递味精。我的自定义验证属性如下:
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true, Inherited = false)]
public class SampleAttribute : RequiredAttribute
{
protected string ProposerErrorMessage { get; set; }
protected string AdditionalDriverErrorMessage { get; set; }
protected bool IsProposer { get; set; }
public SampleAttribute(bool isProposer, string propmsg, string adddrivermsg)
{
ProposerErrorMessage = propmsg;
IsProposer = isProposer;
AdditionalDriverErrorMessage = adddrivermsg;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (IsValid(value))
{
return ValidationResult.Success;
}
else
{
return new ValidationResult(IsProposer ? ProposerErrorMessage : AdditionalDriverErrorMessage);
}
}
}
现在的问题是,如您所见,我只是将 true 作为属性的第一个参数传递。在这里,我需要Isproposer
从 viewmodel 实例传递属性的值,以便我可以采取相应的行动。我怎样才能访问它?