所在位置:首页 > 技术社区 > 技术新闻 >

闲谈Asp.net MVC

时间:2016-03-30 17:10:51 来源:北大青鸟深圳嘉华学校 作者:小狮 已有人浏览

导语

微软最早推出的做网站的技术是 asp, 一个非常古老的技术,使用的语言是vb, 当时可谓是风靡一时,当使用的时间长了,渐渐的发现,语言过

微软最早推出的做网站的技术是 asp, 一个非常古老的技术,使用的语言是vb, 当时可谓是风靡一时,当使用的时间长了,渐渐的发现,语言过于简单,没有面向对象,没有好的IDE,动态脚本跟静态HTML糅杂在一起,维护起来相当困难。因此微软想要稳住自己的地位,不得不开发出更加强大的技术。 那就是在2002年发布的 web form
说实话,微软推出的web form编程模型非常的有创意。他将桌面应用程序的开发模式完全复制到web应用开发中。拖完控件后写事件,这一切是多么的美好,而且前端的输出和后端的程序完全隔离在了两个文件中,维护起来也非常方便,这种开发的过程比起asp、jsp或php简直就是舒服太多了,所有玩过.net平台开发的人员都喜欢上了这种模式。
而就在Web Form大行其道的时候,软在2009年又发布了新的web技术 ,就是MVC。
MVC是什么?MVC就是视图-控制-模型,这种开发模式跟WebForm完全不一样,WebForm中所使用的控件+事件在MVC中没有了,就连GirdView这个让开发人员带来无比快感的控件也被残忍的抛弃,这可能会让我们有点疑惑,微软为什么要推出MVC?这就不得而知了,或许是发现了webForm的潜在缺陷,或许是看到MVC在WEB开发中的强大,又或许是为了跟Java相竞争。
那MVC废掉了控件+事件的模式,那是不是又回到原始的asp开发模式?不是的,其实MVC是在asp.net的基础进行扩展的,只不过选择的方向与webForm不一样而已,所以MVC并不是带我们回到原始,而是带我们以另一种方向来前进,如果非要说是一个轮回,那么这应该说是递进式的、螺旋式的轮回。
那么MVC到底给我们带来了什么变化?
1.服务器端表单控件。 比如我们的文本框,不再使用asp:TextBox,而是使用传统的input,总之,很多服务器端控件被我们废止了。甚至GridView这样曾给我们带来无限快感的老朋友,也不再被提倡使用。
      2.事件驱动模型。
      在ASP.NET MVC中,当某个按钮被点击,你不要再习惯性想到应该在相应的aspx.cs中有个事件处理方法,你应该想到的是该有某个Controller中有个Action来处理这个事件。
      3.数据绑定
      对于列表式表格数据,你一定习惯了GridView的数据绑定,可是,从你使用ASP.NET MVC开始,这不在被提倡了。你应该自己处理数据的显示。
 
那MVC又给我们带来了哪些好处?
  1. 清晰的,关注被分享的代码
  2. 更容易的测试和维护
  3. 更符号要求的MVC表示层
  4. 你可以大声告诉Java Web开发人员,我们也可以使用MVC来开发Web。
 
下面我们来看看asp.net mvc中基础常识
1、asp.net MVC 执行原理
url地址à路由表(RouteTable)àMVCHandlerà控制器àaction方法à视图
2、通过RouteConfig.cs 文件中的routes.MapRoute 来定制灵活多变的路由规则
3、routes.MapRoute 路由规则可以有多个,匹配规则从上到下,类似if结构
4、通过定义了路由规则后,与URL会产生路由数据,可通过RouteData对象来获取 如:
         url规则定义为 “ {controller}/{action}/{id} ”
         对应输入的 url 地址为 account/regist/10
         所产生的路由数据为:  
controller -> account   //获取方式为  RouteData.values[“controller”]
action -> regist                  //获取方式为  RouteData.values[“action”]
id -> id                                  //获取方式为  RouteData.values[“id”]
 
5、asp.net mvc 将数据从后台传向页面的方式有 ViewData、TempData、ViewBag、Model
6、页面中的数据传递到后台的方式有 : url地址、路由地址、表单、参数映射
7、在后获取页面传递过来的数据方式有:
         A、 url地址的获取方式 :  Request.QuesrString[“id”]
         B、 路由地址的获取方式:  RouteData.values[“id”]
         C、 表单数据: Request.Form[“id”]
         D、 参数映射:
                   表单元素<input type=”text” name=”username” />
                   动作方法  public ActionResult AddUser(string username) {   }
                   表单元素的名称与动作方法中的参数名一致,则可将表单中的数据传递到动作方法中。
8、asp.net mvc 分区 ,将项目分成多个区域来进行管理,比如 前后的分区,新的分区默认放在Areas文件夹中,每一个分区都会有一个路由规则文件,用来设置分区后项目的url访问规则,另外就是要注意不同区域的控制器同名的问题。
9、命名: 微软的老一套,约定胜于配置,在asp.net mvc中,有不少约定好的规则要遵循,如: 所有的控制器类命名都要有controller为结尾, 每一个视图都要有以控制器名为命名的文件夹包含。
 
结束语:
微软的自作聪明虽然让我们不爽,但不得不承认,在开发环境的搭建上确实帮我们解决了很繁琐的问题,让我们将更多的精力花在业务上。 不过也不要被微软的这一套宠坏,有时间去研究下Java或PHP,很多原理性的知识可以让你茅塞顿开。

开班信息

Java就业班 01-22 立即报名
WEB基础班 02-28 立即报名
Python基础班 01-22 立即报名
架构师基础班 02-28 立即报名
ACCP基础班 01-22 立即报名
网络工程师 02-28 立即报名
ACCP就业班 01-22 立即报名
Java基础班 02-28 立即报名

申请免费线下试听名额

姓 名:

手 机:

课 程: