我和ASP.NET MVC有个约会
很早之前在项目中使用的软件架构模式,一直想着写一写加深自己对它的理解。但总是一天拖着一天,趁着现在闲,跟大家唠唠嗑这个东西。
首先什么是 MVC(Model-View-Controller) 呢?不得不说这是一个有情怀的思想,它把前后端的代码进行一次极大的解耦。当然这跟我们平常见到的三层是两个完成不一样的概念,它只对 UI 层的一种优化。
我们先来看看它长什么样的吧。
附图 MVC 简单模型:(其实它长的很简单有木有?能看还实用)

根据这个模型你大概就能知道 MVC 其实说白了就是把前后端给分离出来了,后台代码直接存放到 Controller 中,然后通过 Model 来进行数据的传递,前台接收到请求后通过 View 展示出来。
接下来我们通过 Visua Studio 2012 创建一个 MVC 3 的实例让您有更深刻的理解:
1.在 Visual C# -> Web 选择ASP.NET MVC 3 Web 应用程序

2.在进行这一步选择之前我们来了解下项目模板。从下图可看出有3个默认的模板,空模板 / Internet 应用程序 / Intranet应用程序 。
1.空模板:创建完之后就是个空的 ASP.NET MVC 3 项目。 2. Internet 应用程序:生成之后会自动帮我们创建一些文件,如 Home / Index 等 3. Intranet 应用程序:跟 Internet 应用程序最大的区别就是一个是互联网而它是物联网,这当中有一个域的概念。今天聊的话题不是这个,暂不深究
这里我们选择 Internet 应用程序模板(这里我把这个窗体分为3个部分,模板 / 引擎 / 测试单元)

接下来是视图引擎的选择, MVC 给我们提供了2个视图引擎 Razor 和 ASPX 。那视图引擎是用来做什么的呢?这边我想您应该联想到了 View 。我们通过之前的 MVC 模型图可知道 View 在拿到数据后会把数据展现给用户,那是通过什么样的办法来展示给用户呢?渲染引擎,比如您在玩游戏的时候有的游戏会要求安装一个 DirextX 这种东西,它的功能就是要硬件加速,方便以视图的方式更快的渲染出来。而 View 的渲染引擎也是同个道理。那么在这里我们就选择 Razor 来当我们的视图引擎,和 ASPX 视图引擎的最大的明显区别就是 Razor 渲染出来的页面后缀是 .cshtml 而 ASPX 视图引擎则就是我们经常见到的 .aspx 页面。
这里顺便提一下第3个模块 创建单元测试项目 ,顾名思义就是可以为其创建一个测试单元。 今天的话题是初始 MVC ,就不聊这个测试的事了。
最后直接点确定,开始生成我们的第一个 MVC Demo ,画红框的就是生成之后的 MVC 结构中最核心的3个文件夹。其他的文件目录基本都是一些资源文件了。

其次比较值得介绍的当然是 Global.asax 文件了,它是一个解析文件。主要用于解析 HttpApplication 这一个类,总的来说所有的解析都会通过 MvcApplication 来完成解析。也就是说,当客户端发请求过来后,最先交给 MvcApplication ,它来决定调用某个 Controller 的某个 Action。

开始编译浏览下我们第一个 MVC 网站:

这里就会产生一个新的困惑,这个地址 http://localhost:23347/ 为什么没有特意指向某个地址就能访问到这个页面呢?实际上这个请求发起的过程中,URL 地址便省略一部分地址了,实际上的地址应该是:
http://localhost:23347/home/index ,而 /home/index 拆分出来,/home 对应的其实就是目录中的某个 Controller ,而 index 则就是对应 Controller 的某个Action

我和ASP.NET MVC有个约会的更多相关文章
- ASP.NET MVC 4 (十) 模型验证
模型验证是在模型绑定时检查从HTTP请求接收的数据是否合规以保证数据的有效性,在收到无效数据时给出提示帮助用户纠正错误的数据. 显式模型验证 验证数据最直接的方式就是在action方法中对接收的数据验 ...
- 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结
为什么说JAVA中要慎重使用继承 这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus
最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...
- 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino
大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...
- Asp.net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合
今天为大家分享下 Asp.net MVC 将数据从前台传递到后台的几种方式. 环境:VS2013,MVC5.0框架 1.基本数据类型 我们常见有传递 int, string, bool, double ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点
在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之目录导航
ASP.NET MVC with Entity Framework and CSS是2016年出版的一本比较新的.关于ASP.NET MVC.EF以及CSS技术的图书,我将尝试着翻译本书以供日后查阅. ...
- ASP.NET MVC开发:Web项目开发必备知识点
最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...
随机推荐
- Windows Azure案例分析: 选择虚拟机或云服务?
作者 王枫 发布于2013年6月27日 随着云计算技术和市场的日渐成熟,企业在考虑IT管理和运维时的选择也更加多样化,应用也从传统部署方式,发展为私有云.公有云.和混合云等部署方式.作为微软核心的公有 ...
- 非常有用的Java程序片段
1.向文件末尾添加内容 BufferedWriter out = null; try { out = new BufferedWriter(new FileWriter(”filename”, tru ...
- Android 颜色配置表-颜色类
android开发中,常常会用到color.xml颜色配置,好的颜色配置可以让尼的应用让人看起来赏心悦目! 不罗嗦,上图先 该工程已经罗列了常用的颜色配置 附上工程链接:http://download ...
- android webview js交互 第一节 (java和js交互)
转载请注明出处 挺帅的移动开发专栏 http://blog.csdn.net/wangtingshuai/article/details/8631835 在androi ...
- 畅通工程2 HDOJ--1863
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- [转]NHibernate之旅(9):探索父子关系(一对多关系)
本节内容 引入 NHibernate中的集合类型 建立父子关系 父子关联映射 结语 引入 通过前几篇文章的介绍,基本上了解了NHibernate,但是在NHibernate中映射关系是NHiberna ...
- 《C语言程序设计现代方法》第4章 表达式
C语言的一个特点就是它更多地强调表达式而不是语句,表达式是表示如何计算值的公式. 当表达式包含两个或更多个相同优先级的运算符时,运算符的结合性(associativity)开始发挥作用.如果运算符是从 ...
- usaco 奶牛集会 && 奶牛抗议
奶牛集会 Description 约翰家的N头奶牛每年都会参加“哞哞大会” .哞哞大会是世界奶牛界的盛事.集会上 的活动很多,比如堆干草,跨栅栏,摸牛仔的屁股等等.当然,哞哞大叫肯定也包括在内. 奶牛 ...
- Package org.xml.sax Description
This package provides the core SAX APIs. Some SAX1 APIs are deprecated to encourage integration(集成:综 ...
- Code Forces 711D Directed Roads
D. Directed Roads time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...