0

たとえば、2つの類似した単純なMVCアプリケーションがあります。

Application1HomeController->のビューIndex返すアクションAnotherHome

Application2AnotherHomeController->ビューAnotherIndexも返すアクションAnotherHome

Application1インデックスアクション:

public ActionResult Index()
{
    return View("AnotherHome");
}

実行Application1してレンダリングする必要がありますAnotherHome。アプリを実行すると、次のエラーが発生することは明らかです。

The view 'AnotherHome' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Home/AnotherHome.aspx
~/Views/Home/AnotherHome.ascx
~/Views/Shared/AnotherHome.aspx
~/Views/Shared/AnotherHome.ascx
~/Views/Home/AnotherHome.cshtml
~/Views/Home/AnotherHome.vbhtml
~/Views/Shared/AnotherHome.cshtml
~/Views/Shared/AnotherHome.vbhtml

たとえば、ビューエンジンにビューを検索させるにはどうすればよいですApplication2/Views/AnotherHome/AnotherIndex.cshtmlか?

4

3 に答える 3

1

簡単に言うと、別のアプリのアプリケーション ディレクトリにあるビューをレンダリングすることはできません。これは IIS のセキュリティ上の問題であり、アプリケーション パス外のファイルにアクセスできなくなります。

より長い答えは、IIS の仮想ディレクトリをどこかのアプリ ディレクトリにマップできるというものです。しかし、これを管理するには特定の IIS 構成が必要であり、他の誰かが保守していると簡単に壊れてしまう可能性があります。

いずれにせよ、ビューの個別のコピーを保持する方がおそらく良いでしょう。1 つのアプリ用に変更してから、別のアプリを壊したらどうなりますか?

于 2012-10-22T06:49:53.963 に答える
0

ASP.NETのデフォルトのビューエンジンをオーバーライドし、ビューパスをオーバーライドする必要がありますが、ハードコーディングする場合を除いて、2番目のアプリケーションの場所をどこかに構成する必要があります。ビューエンジンの検索パスを変更する方法については、この質問を参照してください。ASP.NETMVCでデフォルトのビューの場所のスキームを変更するにはどうすればよいですか?

于 2012-10-22T04:05:10.097 に答える
0

アプリ間でビューを共有するには、ビューを dll (カミソリ ジェネレーターの場合は Google) にコンパイルし、dll を共有します。

于 2013-11-30T18:01:19.480 に答える