私の ASP.NET MVC3 プロジェクトには、満たす必要がある 2 つの条件を持つカスタム ValidationAttribute があります。うまく機能しますが、カスタマイズされたエラーメッセージを返すことで、どの検証ルールが破られたかをユーザーに知らせたいと思います。
私が使用している方法(基本クラスからエラーメッセージを継承する)では、_defaultError定数の値を初期化した後に変更できないことがわかっているので....
満たさなかった条件に応じて異なるエラー メッセージを返すにはどうすればよいですか?
ここに私の ValidationAttribute コードがあります:
public class DateValidationAttribute :ValidationAttribute
{
public DateValidationAttribute()
: base(_defaultError)
{
}
private const string _defaultError = "{0} [here is my generic error message]";
public override bool IsValid(object value)
{
DateTime val = (DateTime)value;
if (val > Convert.ToDateTime("13:30:00 PM"))
{
//This is where I'd like to set the error message
//_defaultError = "{0} can not be after 1:30pm";
return false;
}
else if (DateTime.Now.AddHours(1).Ticks > val.Ticks)
{
//This is where I'd like to set the error message
//_defaultError = "{0} must be at least 1 hour from now";
return false;
}
else
{
return true;
}
}
}