ASP.NET MVCでDisplayNameAttributeをオーバーライドして、ローカライズされた文字列を提供しようとすると、問題が発生します。コード自体は単純で、別のStackoverflow投稿リンクテキストのコードと似ています
このコードはグローバルリソースでは機能しますが、ローカルリソースではうまく機能しません。登録画面があり、VisualStudioの[ローカルリソースの生成]コマンドを使用してローカルリソースファイルを作成しました。生成されたファイルの名前はRegistration.aspx.resxで、App_LocalResourcesフォルダーは実際のRegistration.aspxページを基準にして作成されます。
ただし、以下を使用してローカライズされた文字列を取得しようとすると、
ResourceManager.GetString(resourceKey)
次のエラーメッセージが表示されます。
指定されたカルチャまたはニュートラルカルチャに適切なリソースが見つかりませんでした。「FullAssemblyName.Views.Account.App_LocalResources.Registration_aspx.resources」がコンパイル時にアセンブリ「FullAssemblyName」に正しく埋め込まれているかリンクされていること、または必要なすべてのサテライトアセンブリがロード可能で完全に署名されていることを確認してください。
リフレクターを使用すると、ファイルが実際にはRegistration_aspx.resourcesではなくRegistration.aspx.resourcesであることがわかります。アンダースコア/ピリオドは微妙な違いです。
FullAssemblyName.Views.Account.App_LocalResources.Registration.aspx.resources
私はコードをかなりいじっていますが、何をしても、要求されているファイルは、アセンブリにコピーされているファイルとは常に異なります。たとえば、Registration_aspxの名前を変更すると(生成されたRegistration.aspx.designer.csクラスで同じエラーが発生しますが、今回のパスは「...App_LocalResources.Registrationaspx.resources」です。
誰かがこれに遭遇しましたか?アセンブリで見つかったリソースにこのアンダースコアが付いていることを確認する方法はありますか?!?!?
前もって感謝します!