04 入门 - ASP.NET MVC应用程序的结构

简介: 目录索引:《ASP.NET MVC 5 高级编程》学习笔记     用Visual Studio创建了一个新的ASP.NET MVC应用程序后,将自动向这个项目中添加一些文件和目录。   如图所示:      用Internet Application模板创建ASP.NET MVC项目后有8个顶级目录。

 

目录索引:《ASP.NET MVC 5 高级编程》学习笔记

 

  用Visual Studio创建了一个新的ASP.NET MVC应用程序后,将自动向这个项目中添加一些文件和目录。
  如图所示:

  


  用Internet Application模板创建ASP.NET MVC项目后有8个顶级目录。
  如图所示:

  

 

如果不喜欢这个目录结构,怎么办?
  ASP.NET MVC并不是非要这个结构。
  事实上,那些处理大型引用程序的开发人员通常跨多个项目来今个应用程序,以便使该应用程序更易于管理。
  (例如,数据模型的实体类常常位于一个来自单独的类库项目中)。
  然而,默认的项目结构确实提供了一个很好的默认目录约定,使得系统的关注点变得明确、清晰。


  当进行扩展时,请注意关于这些文件或文件夹的以下内容:


  1. /Controllers目录
  展开这个文件夹,将会发现Visual Studio默认向里面添加了默认的Controller类。
  如图所示:

  


  2. /Views目录
  展开这个文件夹,将会发现3个子目录(/Home、/Account和/Shared)以及其中的一个模板文件。
  这些子目录也是默认添加到当前项目中的,如图所示:

  


  3. /Content和/Scripts目录
  展开这个目录,将会发现几个CSS文件(用于调整站点上所有HTML文件的样式)以及Javascript库(可以启用应用程序中的jQuery支持)。
  如图所示:

  


  4. /BookStore.Test项目
  展开这个项目,将会发现一个类,其中包含所有对应于HomeController类的单元测试。
  如图所示:

  


  这些由Visual Studio天际的默认文件提供了一个可以运行的应用程序的基本结构。
  完整地包括了首页、关于页面、账户登录/退出/注册页面以及一个未经处理的错误页面(所有页面彼此联系起来,可以直接使用)。


一、SP.NET MVC的约定

  默认情况下,ASP.NET MVC应用程序对约定的依赖性很强。
  这样就避免了开发人员配置和指定一些项,因为这些项可以根据约定来推断。


  例如,当解析视图模板时,ASP.NET MVC采用一种基于约定的目录命名结构。
  这个约定可以实现当从Controller类中引用视图引擎时,省略位置路径信息。
  默认情况下,ASP.NET MVC会从应用程序下的\Views\[ControllerName]\目录中查找视图模板文件。


  设计ASP.NET MVC是围绕着一些基于约定的默认项,这些默认项在需要的时候可以被覆盖。这个概念通常称为“约定优于配置”。


二、约定优于配置

  在Ruby on Rails上约定优于配置的概念流行开来,它的本质意义在于:到目前为止,您已经知道如何创建Web应用程序,现在将以以前积累的经验应用于框架中,以后开发就没必要再配置每一项。


  通过查看应用程序运行的三个核心目录,可以在ASP.NET MVC中看到这一概念:
  1. Controllers
  2. Models
  3. Views


  没必要在web.config文件中设置这些文件夹名称 —— 他们约定在配置文件中。
  这样就避免了编辑XML文件(如web.config)的工作。


  例如,为了显示地告诉MVC引擎“可以在Views目录中查找程序视图” —— 这些程序都已经知道,这就是约定。


  这不是魔术,但实际上又是,但是它又不是那种黑魔术(结果出人意料的,甚至伤害到自己的魔术)。


  ASP.NET MVC的约定非常容易理解,下面是预期的程序结构:
  1. 每个Controller类的名字以Controller结尾,例如ProductController、HomeController等,这些类在/Controllers目录中。
  2. 应用程序的所有视图放在一个单独的Views目录下。
  3. 控制器使用的视图是在Views主目录的一个子目录中,这个子目录是根据控制器名称(后面减去Controller的后缀)来命名的。
  例如“HomeController”使用的视图就放在“/Views/Home”中。


  所有可重用的UI元素都位于一个相似的结构中,而不是全部都直接存在Views文件夹里面。
  相关的内容会在后面操作视图的时候回着重介绍。


三、定简化通信

  编写代码进行通信主要面向两个不同的方面:
  1. 需要将清晰的无二义性的指令传递给计算机,让它去执行。
  2. 需要让开发人员读懂你的代码,以便后期系统的维护、调试以及完善。


  前面已经讨论了约定优于配置如何高效地将开发者的想法意图传达给MVC。
  约定也能帮助开发者清晰地和其他开发人员(或者以后的自己)进行交流。
  不必详细地描述如何构建应用程序的每一个方方面面,按照共同的约定可以是世界上所有的ASP.NET MVC开发人员公用一个公共的标准。


  通常,软件设计模式的优势之一是他们建立了一种标准语言。
  由于ASP.NET MVC采用了MVC模式以及一些独特的定义,这让ASP.NET MVC开发者能够轻松地理解不是自己编写的代码或以前编写但是现在忘记了的代码,即便在大型的系统中也是这样。


  想象一下,国家不同,语言不通,肤色不同,但是写的代码都是按照默认约定走的,你是不是也能看懂了?哈哈。

 

【来自:张董'Blogs:http://www.cnblogs.com/LonelyShadow,转载请注明出处。】

亲们。码字不容易,觉得不错的话记得点赞哦。。

目录
相关文章
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
41 0
|
8天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
|
1月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
29 0
|
1月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
1月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
97 5
|
3月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
25 0
|
3月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
123 0
|
8月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
116 0
|
9月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
67 0