MVC基础概念菜园
刚接触MVC惭愧呀,一个被别人都炒的快糊了的架构框架,到了自己的手里竟然一尘不染:)洗洗手,干吧。如有不对欢迎指正。
以下写的都是自己的理解,没有生硬的抄网络,那样没有意义,除非动了手,否则很难理解其中的滋味。目前不算菜鸟级,最多算个土鳖级,一个字,肉呀。
1. MVC就是一种架构模式,要想弄清楚它,首先得找到参照系,学得才快。
三层架构:用户接口层,业务逻辑层,持久化层; MVC:模型,视图,控制器
三层架构较突出的问题是UI层与Bussiness Layer层之间的扯不清的暧昧关系导致层级混乱。而MVC正是来搞定这点的,其中VIew对应UI,Model对应持久化层,controller即是把业务逻辑与显示层的暧昧断掉;从这点上来讲MVC确实是三层架构的一种进化。
mvc1 模式:
view接收用户输入,把命令传到controller
controller处理命令,更新model
model被更新后,会通知view需要update
view更新后向用户显示mvc2 模式:model被更新后,controller会选一个view并forward到这个jsp,附带把model放到request参数mvc3 增加了Razor视图引擎,ViewBag属性,ActionResult等等老多的新特性了。
MVC与WebForm
首先,两者分属于两个不同的开发模型,各有千秋,无所谓高低贵贱。
其次,较明显的是Web Form与MVC对浏览器请求路径的理解是不一样的,前者是实实在在的路径,后者是方法。
因为动静态页面的区别,MVC对搜索引擎的支持更好一些。
一个URL是怎样定位到相应的Controller中去的
MVC程序访问的http://localhost:2176/Home/Index这个URL,它访问的其实是HomeController中的Index这个Action。
在Webconfig中的UrlRoutingModule
使URL指向controller,而Global.asax决定URL具体指向哪个controller.
View又是怎么被返回给客户端的呢
访问Views目录下的所有的文件都会由System.Web.HttpNotFoundHandler来处理
对于http://localhost:2176/Home/Index这个路径,在默认情况下,在Index这个Action中用return
View()来返回view的时候,会去寻找/Views/Home/Index.aspx文件
小结:MVC根据URL来定位到相应的Controller中的方法;方法的参数即对应的是URL的参数,本来是要返回一个String的,但中间出来了个ActionResult,所以得返回相应的View了,在创建View的时候可以指定其绑定的Model类,所以当controller返回View时,View绑定的类可以通过Model来得到。View的展示示例如下:
<%: Model.SMessage%>
<%: Html.ActionLink("click me thank you.","yesCreat") %>
世界是你们的,也是我们的,但归根结底是他们的。