MVC3 アプリケーション用のカスタム汎用検証メッセージを作成しようとして本当に迷っています。
多くのチュートリアルを読みましたが、その大部分は次のオプションのいずれかを提案しています。
App_GlobalResources フォルダーを作成し、その中にカスタム リソースを配置します。global.asax を変更して、リソースの文字列名を
DefaultModelBinder.ResourceClassKey
プロパティに渡します。リソースのビルド アクションを「埋め込みリソース」に変更します。プロジェクトを右クリックしてプロパティに移動し、[リソース] タブをクリックしてカスタム リソースを作成します。アクセス修飾子を「パブリック」に設定します。
最初のキーはうまくいきませんでした。リソースに次のキーがあります: DefaultModelBinder_ValueRequired、InvalidPropertyValue、PropertyValueInvalid、PropertyValueRequired 、およびモデルの必須属性に空の値を指定して送信およびフォームしようとしたときに、それらのいずれも使用されませんでした. このコードを global.asax Application_Start メソッドに配置しました。
DefaultModelBinder.ResourceClassKey = "My_Resource_Name";
2 番目の方法では、最初の方法と同じキーを持つリソースを作成しました。プロパティが無効または空の場合、デフォルトではそれらのいずれも使用されませんでした (global.asax の ResourceClassKey も変更しましたが、成功しませんでした)。しかし、モデルのデータ注釈にいくつかのパラメーターを追加すると、次のようになります。
[Required(ErrorMessageResourceType = typeof(MyResourceFile), ErrorMessageResourceName = "MyCustomKey")]
そのデータ注釈の属性が空の場合、「MyCustomKey」で定義された私のメッセージが使用されます!
しかし、これをすべての属性に手動で設定したくはありません。「{0} フィールドは必須です」などのデフォルトのエラー メッセージを置き換えたいのです。