在子文件夹中组织控制器和视图 - 最佳实践

时间:2016-04-28 00:23:40

标签: asp.net-core asp.net-core-mvc

我正在考虑在 ASP.NET Core MVC 应用程序中组织我的代码的最佳实践。我有两种类型的用户,医生和护士,最佳做法是在控制器/视图文件夹中的自己的医生和护士子文件夹中组织我的所有医生和护士控制器/视图吗?

控制器:

  • 控制器/医生/ HomeController.cs
  • 控制器/护士/ HomeController.cs

查看:

  • 观看/医生/主页/ Index.cshtml&其他查看文件
  • 意见/护士/主页/ Index.cshtml&其他查看文件

原因是因为在每个Doctors / Nurses子文件夹级别,我想为_viewstart文件拥有自己的共享文件夹。

  1. 这种情况有更好的最佳做法吗?
  2. 此外,在我的控制器中,如何进入子文件夹级别 查看文件? 我找到的唯一方法是明确指定它们:
  3. public string Index()
    {
        return View("~/Views/Doctors/Home/Index.cshtml");
    }
    
    1. 如果我想要我的默认路线去 Doctors / HomeController / Index页面是我如何指定默认值 我的startup.cs文件中的路由。它似乎不起作用。
    2. app.UseMvc(routes =>
      {
          routes.MapRoute(
            name: "default",
            template: "Doctors/{controller=Home}/{action=Index}/{id?}");
      });
      
      1. 最后,正如我所提到的,我希望有一个不同的 每个子文件夹_ViewStart.cshtml。这是否可以接受?

2 个答案:

答案 0 :(得分:5)

非常感谢@Craig W.建议区域。与早期版本的MVC不同,Core没有正式的"区域"右键单击项目时的选项。但是,您可以创建一个文件夹并将其命名为" Areas"。在控制器中,您可以使用 [区域(" Doctors")] 来装饰每个控制器,以指定区域内的控制器。

就startup.cs而言,我能够使用以下内容:

end

答案 1 :(得分:0)

如果您希望将子文件夹用于视图或局部视图,则语法为

    public IActionResult Index()
    {
        return View("~/Views/Doctors/Index.cshtml");
    }