【发布时间】:2023-04-11 08:33:01
【问题描述】:
为了更轻松地编写集成测试,我将控制器放在另一个项目中,而不是主机(启动的那个)。该项目有以下文件:
|
|-- Controllers
| +-- HomeController.cs
|
+-- Views
+-- Home
+-- Index.cshtml
感谢this solution,我的初创公司可以找到控制器:
services.AddMvc().AddApplicationPart(typeof(HomeController).Assembly);
但是,我没有找到任何方法来设置视图的路径。它似乎是相对于启动位置,而不是控制器:当我运行应用程序时,我得到了那个错误:
InvalidOperationException: The view 'Index' was not found. The following locations were searched:
/Views/Home/Index.cshtml
/Views/Shared/Index.cshtml
/Pages/Shared/Index.cshtml
如何指定视图与控制器在同一个文件夹中?
【问题讨论】:
-
我试过这个解决方案,但它不起作用:jackhiston.com/2017/8/15/…
-
我对 Asp.Net Core 不是很熟悉,但是在 .Net Framework MVC 中,你会实现一个自定义的
IViewEngine。 -
@FrenchBoiethios 1. 我试过上面提到的solution,它对我来说很好用。您是否在库中添加了
<EmbeddedResource ...>? 2. 除了该解决方案,更简单的方法是将您的控制器和视图项目更改为 [Razor 组件库,RCL],然后简单地添加对 RCL 的引用,在这种情况下,不需要AddApplicationPart()和Configure<RazorViewEngineOptions> -
@itminus 1. 我很笨,我确实在宿主项目中添加了
<EmbeddedResource>标签。当我把它放在库项目 2 中时它就可以工作。这个解决方案确实是最好的解决方案。既然你解决了我的问题,你能写一个答案吗?
标签: c# asp.net-mvc asp.net-core asp.net-core-mvc