0

例如,我有两个类似的简单 MVC 应用程序。

Application1: HomeController->Index返回AnotherHome视图的操作

Application2: AnotherHomeController->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 配置来管理它,如果其他人正在维护它,它很容易被破坏。

无论如何,保留视图的单独副本可能会更好。如果您为一个应用程序修改它,然后它破坏另一个应用程序会发生什么?

于 2012-10-22T06:49:53.963 回答
0

您将不得不覆盖 ASP.NET 默认视图引擎并覆盖视图路径,但是您必须在某处配置第二个应用程序的位置,除非您想对其进行硬编码。请参阅有关如何更改视图引擎搜索路径的问题,如何更改 ASP.NET MVC 中的默认视图位置方案?.

于 2012-10-22T04:05:10.097 回答
0

要在应用程序之间共享视图,请将视图编译成 dll(Google for razor generator)并共享 dll

于 2013-11-30T18:01:19.480 回答