2017-07-18 28 views
1

我试图将每个ASP.NET控制器的所有代码保留在它自己的文件夹中,与开箱即用的设置相反。因此,例如,我的Home文件夹将包含HomeController,每个视图的所有ViewModel以及与Home相关的所有视图。在视图文件夹外部查看不使用_Layout

的问题是,如果我提出我的看法到Home文件夹,并打出这样:

return View("~/Home/Index.cshtml"); 

它不使用我_ViewStart_Layout,或_ViewImports页的Views文件夹中。我希望能够在应用程序中的任何位置移动这些位置,并且仍然可以让所有视图都能够引用它们。有没有简单的解决方案呢?

+1

您可能需要一个定制的视图引擎来告诉它在哪里寻找视图,布局等。 – DavidG

+0

在你的cshtml文件中,尝试使用特定布局'Layout =“〜/ Views/Shared/_HomeLayout.cshtml”(NB :您需要指定实际布局文件的位置) – hsoesanto

+1

或者我建议您查看由K. Scott Allen制作的功能文件夹软件包,该软件包专门用于做这件事https://github.com/OdeToCode/AddFeatureFolders – DavidG

回答

1

你想使用类似功能的文件夹,这是我这个MSDN文章中描述(也有相关的NuGet包除了斯科特·艾伦的): https://msdn.microsoft.com/en-us/magazine/mt763233.aspx

如果你能等待剃刀页面在ASP .NET Core 2.0,它们提供了许多功能文件夹的相同优点。我有一个关于这个主题的MSDN文章,但是你可以看到一个基于上面这篇文章的示例在这个GitHub分支(当文章发布后很可能会合并到主文件中)的示例: https://github.com/ardalis/organizingaspnetcore/tree/ardalis/razorpages