5

他のアセンブリからのビューを使用する MVC2 Web サイトがあります。これを行うために、ビューを "Embedded Resource" としてマークしました

ビューを表示できましたが、ビューを変更すると、変更が表示されなくなりました。

ビューを埋め込みリソースとして呼び出す方法は、次のようになります。

return View("~/Extension/Extensions.MyExtension.dll/" +
    "Extensions.MyExtension.Views.MyItem.Details.ascx", entity);

この場合、「拡張」部分は、ビューを埋め込みリソースとしてロードする必要があることを示しています。次の部分は、ビューを含むアセンブリを示しています。最後の部分は、ビューの場所 (名前空間を含む) です。

ビューのコンテンツ全体を変更した後、以前のビューのデータがまだ表示されている可能性があります。または、ビューを埋め込みリソースとしてマーク解除することもできます。

Extensions.myExtension.dll の最新のアセンブリがあることを確認するために、アセンブリを Web サイトの bin フォルダーにコピーしました。リフレクターを使用してアセンブリをチェックし、アセンブリに正しいビューがあるかどうかを確認しました。これは正しいビューですが、まだ古いビューが表示されます。

ビューの名前を変更すると問題は一時的に解決しますが、私にとっては良い解決策ではありません。ビューの名前を元に戻すと、古いビューが表示されました。

4

3 に答える 3

2

データがキャッシュされていて、DLL ファイルが変更されたと見なされていない場合、ほとんどのように思えます。web.config にプロパティ 'optimizeCompilations' がありますか? false に設定されているかどうかを確認します。それ以外の場合 (true の場合)、変更された DLL ファイルのみが再コンパイルされます。

詳細については、このMSDN ページを参照してください。

例えば:

<compilation debug="true" defaultLanguage="c#" targetFramework="4.0"
    optimizeCompilations="false">
于 2011-01-12T10:44:09.247 に答える
0

プロジェクト全体を再構築する必要があります。それでも問題が解決しない場合は、プロジェクトをクリーンアップしてからビルドします。

于 2011-01-12T10:18:44.640 に答える
0

コンパイル時にビューが結果のアセンブリに組み込まれるため、プロジェクトの再コンパイルが必要になる場合があります。再コンパイルせずに ASCX ファイルを変更しただけでは、ブラウザーを更新しただけでは変更は反映されません。

于 2011-01-11T17:37:32.427 に答える