データ注釈に検証メッセージを変更します
-
19-09-2019 - |
質問
私のオブジェクトは、データのint型のフィールドがあります。私は、このテキストボックスの手紙にhtmlフォームに入れたときに、フィールドsay-バリデータを数ではない数でなければなりません。私はこのように、このメッセージを変更する方法
[Required(ErrorMessage = "Введите название")]
[DisplayName("Название")]
public int age { get; set; }
解決
私は、データ注釈を使用して、これを達成するために、のクリーンの方法を発見していません。一つの方法は、カスタムモデルバインダーを書くことになりますが、これはこのような単純なタスクのために行うには多くの作業のように思えます。
これを達成するためのもう一つの方法は、あなたのASP.NETアプリケーションにApp_GlobalResources
フォルダを追加することです。 Messages.resx
の文字列リソースを含むPropertyValueRequired
というリソースファイルを追加します。
PropertyValueRequired = "Some custom error message"
あなたのApplication_Start
でリソースクラスキーを登録します:
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
DefaultModelBinder.ResourceClassKey = "Messages";
}
ASP.NET MVC 2の代わりPropertyValueInvalid
リソースキーのPropertyValueRequired
を使用することに注意してください。
IMO(多分、これは変更され、.NET 4に)制限される検証ロジックを実行するデータアノテーションを使用して。あなたは検証ロジックを完全に制御を持っているしたい場合は、私は、このような流暢検証や XVALするます。
他のヒント
私は同じ問題に遭遇した唯一の正の自然数を可能にする正規表現を指定することで、その周りに働いています。
[Required(ErrorMessage = "Введите название")]
[DisplayName("Название")]
[RegularExpression(@"^[0-9]+$", ErrorMessage = "Поле возраст не является числом")]
public int age { get; set; }
このソリューションへのなdownfallsがある場合は、わかりません。私のために正常に動作するようです。
PS:あなたは先行ゼロが"^[1-9]+[0-9]*$"
を使用できるようにしたくない場合は、
振り返ってみると:私はそれを整数に正規表現を追加するために少し奇妙なものの認めざるを得ない。
。