首页 > 解决方案 > 部署后的 .NET Core PartialAsync 异常

问题描述

我使用最新版本的 Visual Studio 2017 创建了一个新的 .NET Core MVC 应用程序。然后我在我的共享文件夹中添加了一个新视图,并像这样引用它:

@await Html.PartialAsync("MyNewView")

这在开发和我的本地 IIS 上运行良好。

将其更改为此(还复制了指定文件夹中的视图):

@await Html.PartialAsync("../Account/MyNewView")

给我一个这样的例外:

InvalidOperationException:未找到部分视图“../Account/MyNewView”。

这个仅适用于 Visual Studio,但不适用于我的 IIS(文件部署)。

我想这与预编译视图有关。有解决方法吗?

标签: c#.net-coreasp.net-core-mvc

解决方案


视图是按约定引用的,因此当您拥有"MyNewView"Razor 之类的内容时,会将其转换为~/Views/[Controller]/MyNewView.cshtml. 如果您在与约定不同的目录中有视图,则需要指定完整的项目相对路径,而不仅仅是Views相对目录。换句话说:"~/Views/Accounts/MyNewView".

Razor 也会Views/Shared按照约定进行搜索,因此如果您有需要在多个不同的控制器视图目录中引用的视图,最好将其放置在那里。"MyNewView"然后,无论您在什么控制器上下文中,您仍然可以只引用,它仍然可以工作。


推荐阅读