1

サテライト リソース アセンブリから読み込まれたローカライズされた文字列を使用して、カスタム バリデーターを作成しました。ここで、「{0} は数値でなければなりません」などのデフォルトの MVC メッセージをオーバーライドしたいと考えています。

この記事では: http://martinnormark.com/asp-net-mvc-localize-numeric-data-val-number-validation 著者によると

ASP.NET MVC 4 のソース コードを参照していたところ、この問題を修正するように見える変更セットが見つかりました。つまり、独自の ResourceClassKey を定義することが可能になり、MVC フレームワークはデフォルトのエラー メッセージを使用する前にそれを使用します。良い!

そのため、新しい機能の使用方法を調べ始めましたが、ほとんどのソリューションは時代遅れで機能しないか、何か間違っている可能性があります。

リソース dll ファイルを使用して MVC 4 でクライアント側のエラー メッセージをオーバーライドするにはどうすればよいですか? MVC 自体が常にどのリソース アセンブリを選択するかを決定しますか?それとも、特定の言語に必要なリソース アセンブリを強制的に選択させることができますか?

4

1 に答える 1

1

どういうわけか、この記事 http://www.codeproject.com/Articles/42168/Localizing-ASP-NET-MVC は以前の検索では表示されませんでした。

重要な点は、App_GlobalResources フォルダーを手動で追加し、そこにリソース アセンブリを移動することでした。その後、カスタム メッセージが取得されました。

何らかの理由で、Visual Studio 2012 で MVC 4 アプリを作成するときに App_GlobalResources フォルダーが見つからないため、これ以上必要ではないと想定しました。しかし、MVC ソース コードを掘り下げると、MVC が App_GlobalResources を参照する HttpContext.GetGlobalResourceObject を使用していることがわかりました。マイクロソフトさん、どうしてこんなことをしているのですか... 最新の MVC バージョンからそのフォルダーを捨てたという理由だけで、さまざまな複雑なソリューションを探すのに 3 日間を費やしました。

于 2013-01-15T09:35:56.300 に答える