BLOGブログ

  • このエントリーをはてなブックマークに追加

ASP.NET MVC5 で初期エラーメッセージの変更方法

ASP.NET MVC5で初期エラーメッセージを変更する方法を、ネットで検索してもなかなかお目当ての情報にたどり着けませんでした。
とりあえず、簡単な方法でメッセージを変更してみましたが、冗長的な記述が増えスマートではなかったので、根本的な変更方法を調べてみました。
根本的に直さずに、そのまま開発している人も多数いるとは思います。参考になれば良いかなっと…。

見出し

初期設定で表示されるエラーメッセージ

skitch

XXX フィールドが必要です。
初期設定のままで、表示されるエラーメッセージはこんな感じ。

XXX を入力してください。

XXX は、必須入力です。
などの文言に変えたくなるエラーメッセージです。
(エラーメッセージに「フィールド」というキーワード使わないと思いますが、どうでしょうか。直訳ですかね。)

環境

  • Visual Studio 2015(Community可)
  • ASP.NET MVC5
  • 新規プロジェクトに「ASP.NET Web アプリケーション」を選択
    「MVC」チェックボックスをチェック
    認証:は「個別のユーザーアカウント」
    (認証がないと登録画面が無いので手軽な検証箇所がないため)

ウィーザードで作ったプロジェクトをそのまま起動してナビバーの登録を押すと下記画面が表示されます。
電子メールとパスワードがちょうど良い検証箇所なので、この画面を使って試したいと思います。
web2

お手軽な変更方法

登録画面にある、電子メールの必須入力エラーメッセージを修正しようと思うので、
修正対象クラスは、 RegisterViewModelクラスになります。
(ソースでいうとProjectカレント¥Models¥AccountViewModels.cs)

Required アトリビュートのErrorMessageプロパティに{0}(パラメータ)と表示したい文字をセットする。

修正前

修正後

動作確認画面

電子メールが未入力の状態で登録ボタンを押すと、「電子メールを入力してください。」のメッセージが表示されるようになりました。
{0}(パラメータ)には、Display属性のNameプロパティで指定している文字列が使われるので、パスワードも同じように修正すれば同様のメッセージが表示されるようになります。
skitch01

いけてる変更方法

必須入力の初期エラーメッセージ自体をXXX を入力してください。
に変更する方法です。
メッセージの文字列も変えたい時に、すぐ変えられるようにリソースファイルとしてが外部に定義します。

エラーメッセージをメッセージリソースに設定

  1. ソリューションエクスプローラのサイト名を右クリックして
    「追加」をクリック
    「ASP.NET フォルダの追加」をクリック
    「App_GlobalResources」をクリック
    上記手順でリソースファイルを追加する「App_GlobalResources」フォルダが作成されます。
  2. 「App_GlobalResources」フォルダを右クリックして
    「追加」をクリック
    「リソースファイル」をクリック
    項目名に「Messages」 と入力し「OK」をクリック
    上記操作で「Messages.resx」ファイルと言うメッセージリソースを定義するファイルが作成されます。
  3. 「Messages.resx」ファイルをダブルクリックすると、エディタが起動します。
    名前に、「PropertyValueRequired」
    値に、「{0}を入力してください。」
    を入力して保存します。

必須エラーメッセージのカスタマイズ

  1. ソリューションエクスプローラのサイト名を右クリックして
    「追加」をクリック
    「新しいフォルダ」をクリック
    フォルダ名を「CustomValidations」にする
  2. 「CustomValidations」フォルダを右クリックして「追加」をクリック
    「クラス」をクリック
    クラス名を「CustomRequiredAttributeAdapter」にする
  3. 「CustomRequiredAttributeAdapter」クラスを下記のように修正する

「CustomRequiredAttributeAdapter」クラスの記述内容

アプリケーションにカスタマズした内容を適用

  1. 「Global.asax」ファイルをダブルクリックしエディタを起動
    「MvcApplication」クラスのApplication_Start() メソッド内の末部にを下記を参考に2行を追加する。

「MvcApplication」クラスの記述内容

完成です。

動作確認画面

電子メール、パスワード共に未入力で登録ボタンを押すと、「電子メールを入力してください。」「パスワードを入力してください。」のメッセージが表示されるようになりました。

skitch02

あとがき

必須入力のエラーメッセージなどは、アプリ内で統一したメッセージを表示すると共に、フレームワーク側でその定義は吸収したいですよね。
手順は少し面倒くさいですが、覚えておくと役に立ちます。
ではでは。

ランキング

最近の投稿

アーカイブ

カテゴリー

RSS