我和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 ...
随机推荐
- Chrome 浏览器地址栏直接搜索太慢的解决方案
用Chrome经常直接把要搜索的内容写在地址栏, 回国就搜索,但最近发现搜索结果出来得太慢,要刷新好几次才行. 解决方案如下: 打开Chrome的"设置", 找到”管理搜索引擎“, ...
- WinPcap编程入门实践
转自:http://www.cnblogs.com/blacksword/archive/2012/03/19/2406098.html WinPcap可能对大多数人都很陌生,我在这里就先简单介绍一下 ...
- ADO.NET 增删查改小总结
转自:http://www.cnblogs.com/ashu123/archive/2010/10/10/ado_1.html 三套路-----增删改 1 using System.Data.SqlC ...
- IIS服务器设置造成引用第三方权限不足问题
使用IIS部署站点,报以下错误: Exception Details: System.Security.SecurityException: That assembly does not allow ...
- 去掉有序数组中重复数字 原地 leetcode java (最简单的方法)
1.利用荷兰国旗的思路,每次记住最后一个位置,遇到一个不重复的数,放在它后面,代码很简单. Given a sorted array, remove the duplicates in place s ...
- JavaScript高级程序设计53.pdf
共有的表单字段方法 每个表单字段都有两个方法:focus()和blur(),其中focus()用于将浏览器焦点设置到表单字段,激活表单字段.可以侦听页面的load事件 EventUtil.addHan ...
- java解惑
java对转义字符没有提供任何特殊处理.编译器在将程序解析成各种符号之前,先将 Unicode 转义字符转换成为它们所表示的字符[JLS 3.2] 阅读笔记
- 三大跨平台网盘--dropbox
背景介绍 Dropbox是一个提供同步本地文件的网络存储在线应用.支持在多台电脑多种操作中自动同步.并可当作大容量的网络硬盘使用. 准备工作 帐号--dropbox官网 软件--windows/ubu ...
- struts1与strut2的区别
struts1和struts2是两个完全不同的框架 struts1工作流程:发布Struts Web服务时,根据web.xml初始化ActionServlet,ActionContext等内容.在接到 ...
- 3 weekend110的shuffle机制 + mr程序的组件全貌
前面,讲到了hadoop的序列化机制,mr程序开发,自定义排序,自定义分组. 有多少个reduce的并发任务数可以控制,但有多少个map的并发任务数还没 缓存,分组,排序,转发,这些都是mr的shuf ...