博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
轻松学MVC4.0–6 MVC的执行流程
阅读量:6495 次
发布时间:2019-06-24

本文共 1287 字,大约阅读时间需要 4 分钟。

原文

 

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对象是优先的方式。

本篇内容结束。

转载地址:http://qikyo.baihongyu.com/

你可能感兴趣的文章
由学习《软件设计重构》所想到的代码review(二)
查看>>
View组件
查看>>
[ElasticSearch2.x]嵌套对象
查看>>
约瑟夫环(排成圈)
查看>>
spring data jpa @Query注解中delete语句报错 : @Modifying注解的使用
查看>>
利用Python网络爬虫采集天气网的实时信息—BeautifulSoup选择器
查看>>
将Python程序(.py)转换为Windows可执行文件(.exe)
查看>>
【iOS开发】解决 UITableview 中选中 Cell 后,Cell 复用导致选中状态消失、应用闪退的问题...
查看>>
2018-07-05 第六十天 JavaScript
查看>>
《11招玩转网络安全》之第二招:漏洞扫描
查看>>
Kotlin的Lambda表达式
查看>>
Hbase与hive整合
查看>>
静态代码块、非静待代码块、静态变量的执行次序
查看>>
Redis分布式锁的try-with-resources实现
查看>>
世界上最真情的相依
查看>>
Ireport报表插件使用之一——参数使用(Ireport5.6.0版本)
查看>>
5分钟带你理解一致性Hash算法。
查看>>
Scrapy爬虫(7)在Windows中安装及使用Scrapy
查看>>
面试:用 Java 逆序打印链表
查看>>
SecureCRT8.0设置语法高亮
查看>>