项目结构约定
文件夹及文件 | 描述 | 注 |
/App_Data | 此文件用于放置私有数据,如XML文件,或使用SQL Server Express,SQLite的数据库文件,或其他文件的存储库 | IIS不将此文件夹的内容进行服务(意即无法通过Web来请求该目录文件) |
/App_start | 此文件夹包含项目的一些核心配置,包括路由和过滤器的定义,以及一些内容包 |
|
/Areas | 区域是把一个大型应用程序划分为较小片段的方法 |
|
/bin | 为MVC应用程序编译好的程序集放在这里,连同任何被引用的包括不在GAC中的引用程序集 | IIS不将此从文件夹的内容进行服务 |
/Content | 用于放置静态内容,如CSS和图片等 | 这是一个约定但不是必须的,你可以把静态内容放在任何适合自己的地方 |
/Controllers | 用于放置控制器类 | 这是一个约定,可以把控制器放在任何地方,因为它们都会被编译到同一个程序集中。 |
/Models | 用于放置视图模型和域模型类,除非是最简单的应用程序,否则都能够获益于一个专用的定义域模型的程序集 | 这是一个约定,可以把模型放在任何地方。或是一个单独的程序集。 |
/Scripts | 本目录意在保存应用程序的JavaScript库 | 这是一个约定,你可以把脚本放在任何位置,因为它们实际上是另一种类型的静态内容。 |
/Views | 保存视图和分部视图,通常按它们的控制器命名的文件夹进行分组 | /Views/Web.config文件阻止IIS对这些目录的直接访问。视图必须通过动作方法来访问。 |
/Views/Shared | 本目录保存布局,以及不专用于个别控制器的视图 |
|
/Views/Web.config | 这不是应用程序的配置文件。它包含使视图能够与ASP.NET进行工作,防止IIS调用视图所需要的配置,还含有默认导入视图的命名空间 |
|
/Global.asax | 这是全局ASP.NET应用程序类。它的后台代码类用于注册路由配置,也是建立涉及应用程序初始化,停机及出现未处理异常情况需要运行代码的地方 | Global.asax文件在MVC应用程序中的作用与其在WebForm应用程序中作用相同 |
/Web.config | 这是应用程序配置文件 | 与WebForm作用相同 |
约定优于配置
约定优于配置的含义为:你不需要明确地配置控制器与其视图之间的关联,只要遵循某种命名约定,一切都会正常工作。
1. 遵循控制器约定
控制器类名必须以“Controller”结尾,如HomeController
2. 遵循视图约定
视图及分部视图放在/Views/ControllerName文件夹中。例如,一个与ProductController相关联的视图应该放在/Views/Product文件夹中。
MVC框架期望,一个动作方法的默认视图应当按照这个方法进行命名。例如:名为List动作方法相关联的视图应该是 “List.cshtml”。
3.遵循布局约定
对于布局的约定是,以下划线(_)字符作为文件名前缀,而且布局文件应该放在/Views/Shared文件夹中。默认情况下,会通过/Views/_ViewStart.cshtml文件将这个布局应用与所有的视图。如果不想把默认布局用于视图,可以修改_ViewStart.cshtml中的设置,或者将Layout设置为null