如何让asp.net核心应用程序在当前项目中查找视图文件?

时间:2018-02-19 14:50:47

标签: c# asp.net-core razor-pages

我的解决方案中有两个项目。 其中一个(主要)是应用程序入口点。另一个( api )处理其中一个业务流程,在99%的情况下需要JSON通信。 但是,对于1%的情况,我需要完整的HTML响应,这就是问题所在。我创建了一个控制器和一个视图,但似乎应用程序在项目中查找视图。

我希望它在解决方案中使用以下文件结构:

/Main/ (and the content of main application) /API/Controllers/TestController.cs (contains definition of Action()) /API/Views/Test/Action.cshtml

但似乎我需要将视图从/API/Views/Test/Action.cshtml复制到/Main/Views/Test/Action.cshtml/Main/Views/Shared/Action.cshtml。这分裂了我的应用程序的内部逻辑:(

2 个答案:

答案 0 :(得分:1)

您可以使用DLL保存视图。 只需确保构建/部署副本的视图'根位置的文件夹。

答案 1 :(得分:0)

您不能(目前至少)在ASP.NET Core项目之间共享视图。在ASP.NET Core 2.1(预览中)中,您可以通过将视图添加到两个项目都可以引用的类库来共享视图。

  

类库中的Razor UI

     

ASP.NET Core 2.1将使其更容易构建,并在库中包含基于Razor的UI,并在多个项目中共享它。新的Razor SDK将支持将Razor文件构建到类库项目中,然后可以将其打包到NuGet包中。库中的视图和页面将自动被发现,并可由应用程序覆盖。通过将Razor编译集成到构建中,应用程序启动时间也明显加快,同时仍允许在运行时快速更新Razor视图和页面,作为迭代开发工作流程的一部分。

目前,您只需要复制每个项目中的视图,并将其放在路线图上,一旦2.1版本发布就可以将其分解出来,并且您可以升级。