C# 如何在VisualStudio中组织.NETMVC应用程序

C# 如何在VisualStudio中组织.NETMVC应用程序,c#,asp.net-mvc,visual-studio,visual-studio-2013,architecture,C#,Asp.net Mvc,Visual Studio,Visual Studio 2013,Architecture,我开始在Visual Studio(.NET MVC)中创建一个完整的应用程序。如果我将所有内容都放在一个解决方案中,并创建三个独立的项目:Admin(由工作人员用于管理应用程序数据)、Web(面向公众的网页)、Shared(公共数据访问和其他代码),这有意义吗。这似乎是有道理的,因为以后我可能会添加一个移动项目或API或 如果不是,您如何在Visual Studio中构建解决方案/项目?如果是我,我会将所有内容都放在一个项目中,并使用区域来分隔视图和模型 例如 Project Area

我开始在Visual Studio(.NET MVC)中创建一个完整的应用程序。如果我将所有内容都放在一个解决方案中,并创建三个独立的项目:Admin(由工作人员用于管理应用程序数据)、Web(面向公众的网页)、Shared(公共数据访问和其他代码),这有意义吗。这似乎是有道理的,因为以后我可能会添加一个移动项目或API或


如果不是,您如何在Visual Studio中构建解决方案/项目?

如果是我,我会将所有内容都放在一个项目中,并使用区域来分隔视图和模型

例如

Project
    Areas
        Admin
            Controllers
                AdminController.cs
            Models
                Admin.cs
        Main
            Controllers
                MainController.cs
            Models
                Main.cs
                LoginLogout.cs
                LoginForm.cs
    Views
        Admin
            Shared 
                permissions.cshtml
                admin.cshtml
        Main
            Shared
                loginLogout.cshtml
                loginForm.cshtml
            master.cshtml
            Index.cshtml

区域提供了一种非常好的方法来分割web应用程序的各个部分,因为它们都在同一个项目中,所以您可以让您的所有部分使用相同的视图布局(母版页),使每个部分看起来都一样

区域将映射到URL,如


在该示例中,您不会将主分区放在某个区域中,而是对站点的主要部分使用普通的模型视图控制器模式,只为管理员或其他分区引入一个区域。

我忘记了区域。如果我从同一个站点运行所有内容,这可能会起作用。如果我需要从Intranet网站运行管理员,则可能无法运行。为了支持该方案,我将创建两个web应用程序。一个用于主站点,一个用于管理部分。在管理网站,使它没有一个区域。在IIS中,将管理站点映射为/admin虚拟路径上的子应用程序。然后,如果以后需要移动站点,您可以删除子应用并将站点移动到其他地方。是否将两个web应用放在同一个解决方案中?或者让它们成为两个独立的解决方案?好吧,如果你有Visual Studio 2015,它现在就支持共享项目,但在2013年,我会在同一个解决方案中完成这一切。通过2015,您可以创建共享项目来存储可重用的css、js、视图(cshtml)、代码等。您可以引用共享项目,并将它们链接到构建中。例如,与类库不同的是,共享项目不会生成。引用它的那个构建了它。这会将代码直接拉入web应用程序集。至于css/js等,当你发布网站时,它会将它们作为内容包含在内。不过,web应用程序中的共享项目存在一个bug,我最近发布了一个问题/答案,其中讨论了如何在web应用程序中使用它们。