《1.从AspWebForm过度到AspMVC》由会员分享,可在线阅读,更多相关《1.从AspWebForm过度到AspMVC(24页珍藏版)》请在金锄头文库上搜索。
1、BF-TECH 4.0 DNET 软件开发工程软件开发工程师高薪就业品牌课程师高薪就业品牌课程版权所有:北风网ASP.NET 4.5 MVC 开发实战教程讲师:石曼迪课程大纲课程大纲视图开发引擎可复用UI组件路由MVC应用程序架构设计AJAXMVC网站安全移动WEB网站开发客户端优化技术MVC程序部署及实施第一章:从第一章:从A Web Form过过度到度到 A MVC目录目录MVC技术背景什么是MVC模式MVC架构说明ASP.NET MVC 4新特性MVC技术背景技术背景Web架构时代架构时代-ASP&PHP&JSP时代-ASP.Net 2.0时代(2004-2005)-AJAX时代(200
2、6-2007)-Flash&Silverlight时代(2007-2008)-ASP.Net MVC时代(2008-2009)-ASP.NET Web API(2012-?)MVC技术背景技术背景:ASP&PHP&JSP时代时代优点-语法简单-数据访问快捷(全靠ODBC撑着)不足-没有架构概念-显示和数据混编-无法测试MVC技术背景技术背景: ASP.Net 2.0时代时代-服务器端空间-皮肤和样式-数据源控件与数据绑定控件-内建若干Services eg:membership,webpart提出主题和控件皮肤概念。提供了分页和排序,可以绑定数据源自动生成数据。webpart可以把某区域的服务
3、器控件组装到某容器里。MVC技术背景技术背景: ASP.Net 2.0时代时代优点-开发快捷-部署方便不足-控件导致代码冗余(特别是GridView)-服务器端与用户端交互过于频繁-无单独的UI定制-无法进行完整测试MVC技术背景技术背景: AJAX时代时代-自动提交用户数据的时代-良好用户体验的开端时代前端设计师彻底和业务逻辑说再见的时代,他的技术并不新,她就是拿Javascript的xml,http对象模拟请求,这个请求是异步请求,他是通过Javascript引擎中提供的脚本,在用户不知不觉中就提交了数据,这一小技术的开始使得用户体验大大上升。但因为各浏览器之间标准不统一,用起来也不方便,
4、但是今天由于已经封装好了Javascript的类库,因此使用起来非常的方便。MVC技术背景技术背景: AJAX时代时代优点-用户体验内容丰富不足-开发和调试内容繁琐-无法进行完整的测试MVC技术背景技术背景: Flash&Silverlight时代时代-富有表现力的一代优点-表现力丰富不足-支持资源少-精简的类库,受限大MVC技术背景技术背景: MVC时代时代一般认为webforms的缺点大致有以下几个方面:ViewState问题,导致在浏览器和服务端反复来回传递,影响页面呈现的效率页面生命周期:页面生命周期的一部分:连接客户端事件和服务端事件处理代码的机制非常复杂,只有少数的开发人员能够完全
5、掌握并去操控。不能很好的分解关注点,MVC一直贯彻的思想是:约定胜于配置,分解关注点对HTML操控受限,我们知道服务端控件最终也是以HTML的形式呈现,但往往不是我们认为必要的,而且不能很好的应用CSS样式。比如ID为发生变化,当然在4.0里面有了设置ID的呈现模式。Leaky abstraction:直译是抽象泄漏,我不知道怎么翻译合理,我理解的意思是抽象不完全,WebForms试图在任何可能的地方隐藏HTTP和HTML的细节。当我们实现自己的逻辑时,常常容易偏离的抽象,也因此强制我们去对回发机制进行反向工程,或者是很笨拙的去实现生成我们期望的HTML。另外,所有的这些抽象会成为令组件开发人
6、员沮丧的包袱。可测试性弱MVC技术背景技术背景: MVC时代时代ASP.NET MVC 解决了这些问题什么是什么是MVC模式模式我们先来看一下普通的WebForm模式下,我们请求一个例如http:/ MVC程序访问的http:/localhost:2176/Home/Index这个URL,它访问的其实是HomeController中的Index这个Action什么是什么是MVC模式模式Model 是指 要处理的业务代码和数据操作代码View 视图 主要是指的 跟用户打交道 并能够展示数据Controller 看成是 Model和View的桥梁MVC 框架:框架:约定大于配置控制器类命名 以 C
7、ontoller结尾:HomeController控制器类将会产生一个 与之同名的 在Views文件夹下的 文件夹:/View/Home控制器里的 Action方法,也可在视图文件夹下生成一个同名的视图,如:Index.cshtml现场编程现场编程新建MVC项目分析目录含义新建控制器新建视图新建模型传值传值传值传值ViewBag,ViewData,TempData区别?ViewBag和ViewData生命周期相同,仅对当前View有效,不同的是ViewBag的类型不再是字典的键值对结构,而是dynamic动态类型。TempData保存在Session中,Controller每次执行请求的时候,
8、会从Session中先获取TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删除。具体代码层面,TempData获取过程是通过SessionStateTempDataProvider.LoadTempData方法从ControllerContext的Session中读取数据,而后清除Session,故TempData只能跨Controller传递一次。如果我们想读取TempData的值但是又不让它被删除,可以使用TempData.Peek(Key)方法。如果想再保持一次TempData里面的值,可以使用TempData.Keep(Key).部分视图部分视图RenderBody()总结总结MVC开发优势传值项目创建约定视图展现学习地址:ASP.NET 4.5 MVC实战教程:http:/