[译]Professional ASP.NET MVC3(03) - Chapter 1:Getting Started(下)

简介:

三、理解MVC应用程序结构

使用Visual Studio创建一个新的ASP.NET MVC应用后,会自动为项目生成一些文件和目录,如图1-10所示.。 ASP.NET MVC项目默认有六个顶级目录,如表1-1所示。

image

 

表1-1:默认顶级目录

目录

用途

/Controllers

用来放处理URL 请求的Controller类

/Models

用来放表示及操作数据业务对象的类

/Views

用来放负责表示输出(例如HTML)的用户界面模板文件的位置

/Scripts

放JavaScript库文件和脚本(.js)的位置

/Content

放置CSS,图片文件以及其他非动态或JavaScript的内容

/App_Data

用来存储想要读写的数据文件的位置

 

假如我不喜欢这种目录结构该呢?

ASP.NET MVC并不强制要求使用该结构。事实上,开发人员在进行大型应用开发时会将应用程序划分为多个项目,从而使其更加方便管理(例如,数据模型类经常被分离出来,单独放置在一个类库项目中)。不过,默认生成的项目结构确实提供了不错的目录惯例,你可以通过使用它来保持清晰的应用程序关注点。

 

注意下面这些文件和目录。当你展开时:

  • /Controller文件夹:你会发现Visual Studio默认向项目中添加了两个controller类——HomeController和AccountController(图1-11)。

image

  • /Views文件夹:你会发现默认向项目中添加了三个子目录——/Account, /Home, /Shared,以及里面包含的一些模板文件(如图1-12)。
  • /Content和/Sripts文件夹,你会发现用于控制整站HTML样式的Site.css文件,以及使项目支持jQuery的JavaScript类库(如图1-13)。

image                           image

 

  • MvcMusicStore.Tests项目:可以看到两个类,包含了关于Controller类的单元测试(见图1-14)。

image

这些由Visual Studio添加的默认文件,为你提供了一个可用的应用程序的基本结构,结束时已经包含了主页,关于页面,账号登录、注销、注册页面,以及错误处理页面。

ASP.NET MVC和惯用约定

ASP.NET MVC应用程序在很大程度默认依赖于惯用约定。它使开发人员能够避免进行一些可以基于约定推断出来的配置和定制等。

例如,MVC使用当处理view模板时,MVC使用基于约定的目录命名结构,这些约定使你在controller类引用view时忽略其物理路径。ASP.NET MVC默认会在项目的\Views[ControllerName]\文件夹查找view模板文件。

MVC是围绕着一些明显的基于约定默认值来设计的,当然如过需要的话可以被重写。这个概念通常被称作“约定由于配置”(convention over configure)。

 

约定由于配置(Conventon over Configureation

约定由于配置的概念是在若干年前由Ruby on Rails流行而来的,主要含义是:

到现在为止,我们知道应该如何构建一个web应用程序。那么我们来把这些经验融合到框架中,这样我们就不必每次都重新进行所有配置

 

通过查看应用程序运行的三个核心文件夹,我们就可以在ASP.NET MVC的工作中发现此概念:

  • Controllers
  • Models
  • Views

你不必在web.config文件中设置这些文件夹名称——按照约定他们会在那里。这就省去了必须编写像web.config这样的XML文件的工作。例如,为了明确的告诉MVC引擎,“你可以在Views路径找到我的views”——它已经知道了。这是一个约定。

 

This isn’t meant to be magical. Well, actually, it is; it’s just not meant to be black magic — the kind of magic where you may not get the outcome you expected (and moreover can actually harm you). ASP.NET MVC’s conventions are pretty straightforward. This is what is expected of your application’s structure:

这并不是神乎其神的。不过,事实上它确实是。不过它并不是巫术——从这种魔术那里可能得不到你所预期的结果(此外,还可能会伤害到你)。ASP.NET MVC中的约定是非常简单的,下面将是你的软件结构:

  • 每个Controller类命名都以Controller结尾——如ProductController、HomeController等,都存在于Controllers目录。
  • 有一个单独的Views目录存放程序中所有的Views。
  • Controllers所使用的Views都在Views主目录下的子目录中,并且根据controller名称进行命名(去除Controller后缀)。例如,前面提到的ProductController对应的view存在于 /Views/Product文件夹中。

所有可共用的UI元素都以类似的结构存在,不过是在Views文件夹下的Shared目录中。在第3章中会了解更多关于Views的信息。

 

约定简化沟通(Conventions Simplify Communication

你编写代码来进行表达和交流。主要要向两类不同的观众进行表述:

  • 你必须清楚明白地向计算机传到执行指令;
  • 想要开发者能够定位并阅读你的代码,以便于进行后续的维护、调试和扩展

我们已经讨论了约定优于配置原则是如何帮你高效地向MVC表达你的意图的。约定还能使你清楚地同其他开发人员(包括今后自己)进行交流沟通。遵循通用的约定使全世界的MVC开发人员能够在所有的程序中具有共同的基准,这样就避免了对程序结构的每个方面进行反复的讲述。软件设计模式通常的优点之一是它建立了一个标准的语言。由于ASP.NET MVC应用了MVC模式,并且包含了一些自己的约定惯例,使得MVC开发人员即使在大型项目中也很容易看懂并非他们自己编写(或者不记得写过)的代码。

四、 总结

本章涉及面较广,首先从ASP.NET MVC简介开始,介绍了ASP.NET web框架和MVC软件模式如何融合成强大的系统来构建web应用程序。你可以看到ASP.NET MVC怎样经历两个版本而臻于成熟,较深入地介绍了ASP.NET MVC 3的特征和重点。基于这些基础,进行了开发环境的安装并且开始创建一个简单的MVC3应用。最后,查看了MVC 3应用程序的结构和构件。从第2章的Controllers开始,在后面的章节中我们会更加深入的了解这些组成部分的细节。



    本文转自 陈敬(Cathy) 博客园博客,原文链接:http://www.cnblogs.com/janes/archive/2012/04/03/2426796.html,如需转载请自行联系原作者


相关文章
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
29天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
28 0
|
30天前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
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,然后在重定向到另
95 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
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
51 0
|
8月前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
106 0
|
8月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(六)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情,购物车等功能的开发,今天继续讲解订单管理功能开发,仅供学习分享使用,如有不足之处,还请指正。
214 0
|
8月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
114 0