ビューモデルには、以下のような多くの文字列プロパティがありSample
ます。私の要件は、ビューモデルの bool フラグに応じて異なる検証メッセージを表示することです。以下に示すように、そのフラグは 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 インスタンスからプロパティの値を渡して、それに応じて動作できるようにする必要があります。どうすればアクセスできますか?