《从aspwebform过度到aspmv》由会员分享,可在线阅读,更多相关《从aspwebform过度到aspmv(24页珍藏版)》请在金锄头文库上搜索。
1、BF-TECH 4.0 DNET 软件开发工程师高薪就业品牌课程 版权所有:北风网,ASP.NET 4.5 MVC 开发实战教程 讲师:石曼迪,课程大纲,视图开发引擎 可复用UI组件 路由 MVC应用程序架构设计 AJAX MVC网站安全 移动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时代(2006-2007) -Flas
2、h&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模式,那么MVC中又是怎么个流程呢: 在MVC中,客户端的所请求的URL是被映射到相应的Controller去,然后由Controller来处理业务逻辑,或许要从Model中取数据,然后再由Controller选择合适的View返回给客户端。再说回前面我们运行的ASP.NET MVC程序访问的http:/localhost:2176/Home/Index这个URL,它访问的其实是HomeControl
7、ler中的Index这个Action,什么是MVC模式,Model 是指 要处理的业务代码和数据操作代码 View 视图 主要是指的 跟用户打交道 并能够展示数据 Controller 看成是 Model和View的桥梁 MVC 框架:约定大于配置 控制器类命名 以 Contoller结尾:HomeController 控制器类将会产生一个 与之同名的 在Views文件夹下的 文件夹:/View/Home 控制器里的 Action方法,也可在视图文件夹下生成一个同名的视图,如:Index.cshtml,现场编程,新建MVC项目 分析目录含义 新建控制器 新建视图 新建模型,传值,传值,View
8、Bag,ViewData,TempData区别? ViewBag和ViewData生命周期相同,仅对当前View有效,不同的是ViewBag的类型不再是字典的键值对结构,而是dynamic动态类型。 TempData保存在Session中,Controller每次执行请求的时候,会从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:/ ,