ASP.NET Core 2.0 只在共享文件夹中寻找 View

标签 asp.net asp.net-core asp.net-core-2.0

ASP.NET Core 2.0 中关于如何查找 View 的一些不明显的(或显然未通过 Google-foo 找到)发生了变化。所有与通用区域路由 ( "{area:exists}/{controller=Home}/{action=Index}/{id?}" ) 关联的 View 都将执行它们的操作并按预期找到它们关联的 View ,但是如果我指定一个不太通用的路由,例如 "Forums/Recent/{page?}" ,它不会找到 View 。我再怎么强调都不为过, Controller Action 中的代码会触发,因此它正确地使用了路由。它只是没有在正确的位置寻找 View 。它只在共享的地方寻找:

InvalidOperationException: The view 'Recent' was not found. The following locations were searched:
/Areas/Forums/Views/Shared/Recent.cshtml
/Views/Shared/Recent.cshtml

它不是在/Areas/Forums/Views/Forum/Recent.cshtml 中查找,按照惯例,它与 Controller 匹配。

如果重要的话,我的 Controller 与 View 不在同一个项目中。同样, Controller 操作执行,但它甚至没有在 View 的正确位置查找。它在 v1.1 中正常工作。

最佳答案

原来这是 View 引擎中的一个错误,当您的路由定义中有“页面”时会出现该错误。寻找 View 的位看起来不正确:

https://github.com/aspnet/Mvc/issues/6660

该团队已将该错误移至 2.0.1 版本:

https://github.com/aspnet/Mvc/milestone/38

关于ASP.NET Core 2.0 只在共享文件夹中寻找 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45724954/

相关文章:

c# - Global.asax 没有捕获到错误?

asp.net - 如何将 javascript 添加到最初可能隐藏在 ASP.NET 中的控件上?

asp.net-core - 如何在配置文件更新后从 Identity Server 4 刷新声明?

c# - 刷新asp.net core 2.0上的静态html缓存

javascript - 在回发 Bootstrap 选项卡后使当前选项卡处于事件状态

c# - xUnit - 显示理论成员数据的测试名称 (TestCase)

asp.net-core - 在 Visual Studio 之外获取 .NET Core 中所有使用过的 NuGet 包的许可证信息

c# - 实体类型 'Microsoft.AspNetCore.Identity.IdentityRole' 处于影子状态

c# - 将 .NET Dictionary<string, string> 序列化为 JSON 键值对对象