轻松学MVC4.0–6 MVC的执行流程

原文 http://www.cnblogs.com/ybst/archive/2012/11/02/2750700.html

 

MVC在底层和传统的asp.net是一致的,在底层之上,相关流程如下:

1)Global.asax里,MvcApplication对象的Application_Start()事件中,调用 RouteConfig.RegisterRoutes(RouteTable.Routes); 来注册路由规则。

2)RouteConfig.RegisterRoutes()方法里,给出的默认规则为 {controller}/{action}/{id} . 

    a. 在有特别需要的时候,到这里来修改规则。

    b. 未指明Controller默认为HomeContoller,未指定Action默认为Index, 也就是说,直接访问站点时,会默认导航到HomeController下的Index Action. 

    c. Action后跟的内容会被映射为名为id的参数。 比如: User/Delete/1 会匹配到 UserController的 Delete(int id) 方法。

    d. Action分为[HttpGet]和[HttpPost]两种,与HTTP的GET和POST方式对应。 即直接请求的URL只会匹配[HttpGet]方法,而未注明[HttpPost]的方法即默认为[HttpGet].  Post的Action一般会有一个Model参数,MVC会自动将表单里的数据按约定的规则填充到Model实体对象里。 这个约定的规则,就是表单的Name与属性名称有个对应规则。

3)MVC负责按上述规则将执行流程导入合适的Action中,即Controller的某个方法中。

4)Action中,可以直接返回字符串,输出到浏览器, 也可以返回到ActionResult对象, 该对象指向一个View页面,并且附带了一些属性作为传递数据的容器。

ActionResult通常通过调用Controller对象的View(…)方法得到,也可以通过Redirect()方法或 RedirectToAction()方法得到, 不过后面两种方法主要用于跳转到其它Controller,因为后面的方法不能传递Model对象。 Action向View传递数据,可以通过Model、ViewBag或ViewData三种容器,其中Model是强类型的,所以是最优先的方式。

5)View中,会先执行本身,再执行模板页和子页, 但是执行顺序和页面内容的输出顺序并不一致。模板中后输出的内容可以在页面中先输出的内容的前面.

在View中,需要提交数据,或跳转页面里,均会通过Route导向某个Controller的Action。 View中向Action中传递数据,其最终原理是通过http的GET和POST等方式(含AJAX的), POST方式会通过上面提到的约定规则,将表单中的数据填充到Model参数对象中。 在Action中,可以访问通过参数传递进来的Model对象,也可以访问原始的Request对象中的QueryString参数或Form集合, 当然Model对象是优先的方式。

本篇内容结束。

时间: 2024-08-22 15:06:24

轻松学MVC4.0–6 MVC的执行流程的相关文章

轻松学MVC4.0–1 建立MVC项目

原文http://www.cnblogs.com/ybst/archive/2012/10/31/2747503.html 前提条件:安装好VS2012 1)创建新项目,选MVC里的Internet项目.它会自动的帮助我们做很多工作,是最轻松的MVC开始之门. 2)设置数据库.数据库和一些基础的表,会在后面自动创建.这里我们设置一下数据库的名称等信息.修改Web.config里的DefaultConnection连接字符串即可. 当然,如果需要连接已有的数据库,也是可以的,同样修改这里的连接字符

轻松学MVC4.0–7 View之Razor

原文http://www.cnblogs.com/ybst/archive/2012/11/05/2754588.html Razor,很有意思的剃刀.相较与之前开发WEB的方式,Razor真是轻松惬意. 下面说一下我使用Razor的一些心得.     页面中归根结底是一个输出字符串(HTML CSS JS等混合的字符串)的过程.现在流行的Web开发方式,包括Asp(.net), Jsp, Php 等等,在页面上,都是在输出HTML字符串的过程中,嵌入服务器代码.或者理解成相反的过程, 不管如何

轻松学MVC4.0–3 删除用户功能

原文 http://www.cnblogs.com/ybst/archive/2012/10/31/2747997.html 在上一篇中,我们创建了用户列表页面. 现在,我们将用户列表功能,加入到菜单中.打开 Views\Shared\_Layout.cshtml,找到菜单部分,加入用户列表菜单项: 保存后,右键点击项目文件,弹出菜单中选 "在浏览器中查看": 如果未登录点击Users, 会跳转到登录页面,这是因为在其Controller类AccountController中,加入了一

轻松学MVC4.0–2 创建用户列表页面

原文 http://www.cnblogs.com/ybst/archive/2012/10/31/2747764.html 接 上回 创建的项目, 1.打开 Controllers\AccountController.cs 2.加入新方法Index: 3.在方法名称上点击右键,选择添加视图 确保选择了图上红色箭头指向的东西,确定之后会在 Views/Account文件夹下生成一个视图:Index.cshtml. Index.cshtml文件中已经生成了一些代码,为了该页面通用性(扩展性)好些,

轻松学MVC4.0–4 扩展UserProfile

原文 http://www.cnblogs.com/ybst/archive/2012/10/31/2748275.html 1.扩展字段. 现在,要给UserProfile表加两个非空字段:FirstName, LastName. 因为前面我们已经注册过用户,该表中已存在数据,要添加非空字段比较麻烦,我们可以删除掉现有用户,从头开始会更简单.通过前面加入的删除用户的功能将现有用户全部删除. 在VS的数据连接中,打开DefaultConnection的UserProfile表: 点击Update

轻松学MVC4.0–5 角色Roles

原文 http://www.cnblogs.com/ybst/archive/2012/11/01/2749362.html 一个系统的权限模型,可能简单也可能复杂. 但是如果掌握了简单的基础,复杂的东西就可以很好的解决. 我们就从简单的东西学起.打开表webpages_Roles,添加两个角色: 打开Views\Account\Index.cshtml,作如下修改: 最后加一段JS: 确保模板文件,Views\Shared\_Layout.cshtml 中引用了相关的JS库文件: Accoun

通过一个模拟程序让你明白WCF大致的执行流程

在<通过一个模拟程序让你明白ASP.NET MVC是如何运行的>一文中我通过一个普通的ASP.NET Web程序模拟了ASP.NET MVC的执行流程,现在我们通过类似的原理创建一个用于模拟WCF服务端和客户端工作原理的模拟程序.[源代码从这里下载] 目录 一.基本的组件和执行流程 二.创建自定义HttpHandler实现对服务调用请求的处理 三.定义创建WCF组件的工厂 四.定义HttpModule映射WcfHandler 五.创建自定义的真实代理实现服务的调用 六.定义服务代理工厂 七.服

主攻ASP.NET MVC4.0之重生:ASP.NET MVC使用JSONP

原文:主攻ASP.NET MVC4.0之重生:ASP.NET MVC使用JSONP 原文地址 http://www.codeguru.com/csharp/.net/net_asp/using-jsonp-in-asp.net-mvc.htm 1.创建JsonpController public class JsonpController : Controller { // GET: /Jsonp/ VoteUserRepository userrepository = new VoteUser

Spring.Net在Mvc4.0中应用的说明

案例Demo:http://yunpan.cn/cJ5aZrm7Uybi3 访问密码 414b Spring.Net在Mvc4.0中应用的说明 1.引用dll       2.修改Global文件 (SpringMvcApplication)       3.控制器添加属性     4.WebConfig配置   <!--必须紧跟着configuration之后-->   <configSections>     <sectionGroup name="spring