0

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」です。

誰かがこれに遭遇しましたか?アセンブリで見つかったリソースにこのアンダースコアが付いていることを確認する方法はありますか?!?!?

前もって感謝します!

4

1 に答える 1

0

Michael K. Campbell ソリューションリンク テキストを試してください。私のプロジェクトをローカライズする際にうまくいきました。

于 2010-01-28T17:10:51.803 に答える