Asp.net core 在子文件夹中组织控制器和视图-最佳做法

Asp.net core 在子文件夹中组织控制器和视图-最佳做法,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,我正在考虑在ASP.NET核心MVC应用程序中组织代码的最佳实践。我有两种类型的用户,医生和护士,将我的所有医生和护士控制器/视图组织到控制器/视图文件夹中自己的医生和护士子文件夹中是最佳做法吗 控制器: 控制器/医生/家庭控制器.cs 控制器/护士/家庭控制器.cs 观点: Views/Doctors/Home/Index.cshtml和其他视图文件 Views/Nurses/Home/Index.cshtml和其他视图文件 这是因为在每个医生/护士子文件夹级别,我都希望有自己的共享文

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

控制器:

  • 控制器/医生/家庭控制器.cs
  • 控制器/护士/家庭控制器.cs
观点:

  • Views/Doctors/Home/Index.cshtml和其他视图文件
  • Views/Nurses/Home/Index.cshtml和其他视图文件
这是因为在每个医生/护士子文件夹级别,我都希望有自己的共享文件夹作为_viewstart文件

  • 对于这种情况,是否有更好的最佳实践
  • 此外,在我的控制器中,如何进入子文件夹级别 查看文件? 我发现的唯一方法是显式指定它们:
  • 公共字符串索引()
    {
    返回视图(“~/Views/Doctors/Home/Index.cshtml”);
    }
    
  • 如果我希望我的默认路线转到 医生/家庭控制器/索引页这是我指定默认值的方式吗 在我的startup.cs文件中路由。它似乎不起作用
  • app.UseMvc(路由=>
    {
    routes.MapRoute(
    名称:“默认”,
    模板:“医生/{controller=Home}/{action=Index}/{id?}”);
    });
    
  • 最后,正如我提到的,我想有一个不同的
    \u ViewStart.cshtml
    用于每个子文件夹。这项工作可以接受吗

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

    至于startup.cs,我可以使用以下内容:

    app.UseMvc(路由=>
    {
    routes.MapRoute(
    名称:“区域路线”,
    模板:“{area:exists}/{controller}/{action}”);
    routes.MapRoute(
    名称:“默认”,
    模板:“{area=Doctors}/{controller=Home}/{action=Index}”);
    });
    
    如果希望为视图或部分使用子文件夹,则语法为

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

    我还没有机会玩核心MVC的东西。CraigW说,它是否已经取消了区域的概念。感谢您的建议,我将更新我的解决方案。虽然您的代码可能会提供问题的答案,但请在其周围添加上下文,以便其他人了解它的作用和原因。您能更详细地解释一下吗?项目树+控制器代码+视图树的确切外观是什么?当时可能是这样,但现在在visual studio中可用。右键单击项目>添加>新建脚手架项目。