c# - 部署后的 .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(文件部署)。
我想这与预编译视图有关。有解决方法吗?
解决方案
视图是按约定引用的,因此当您拥有"MyNewView"
Razor 之类的内容时,会将其转换为~/Views/[Controller]/MyNewView.cshtml
. 如果您在与约定不同的目录中有视图,则需要指定完整的项目相对路径,而不仅仅是Views
相对目录。换句话说:"~/Views/Accounts/MyNewView"
.
Razor 也会Views/Shared
按照约定进行搜索,因此如果您有需要在多个不同的控制器视图目录中引用的视图,最好将其放置在那里。"MyNewView"
然后,无论您在什么控制器上下文中,您仍然可以只引用,它仍然可以工作。
推荐阅读
- javascript - 如何根据开始日期将日期选择器结束日期更改为 1 年
- kubernetes-helm - 如何在 helm3 图表中设置字段应用程序版本?
- javascript - How to call an original promise resolution when in recursive function
- database - 红移物化视图刷新是否会锁定基表?
- sql - 如何添加索引以便 Apache Drill 在查询 JSON 文件时更快?
- xml - 导入另一个命名空间并使用其类型声明的 XSD 问题
- c# - 在 C# 中列出目录
- css - 自定义自动完成不会超出 div
- c# - 抛出异常后对象存在多长时间
- php - 使用来自 PHP 函数的数据填充 HTML 列表框