MVC应用程序解读.ppt_第1页
MVC应用程序解读.ppt_第2页
MVC应用程序解读.ppt_第3页
MVC应用程序解读.ppt_第4页
MVC应用程序解读.ppt_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第20章ASP.NETMVC应用程序,本章为路由器视图,20.1MVC概要,MVC为Model-View-Controller的缩写,将一个Web应用程序的输入、处理、输出流程如Model、View、Controller那样“视图”(View )表示用户交互式界面,在Web应用程序中可以汇总为HTML界面,但可以是XHTML、XML和applet。 视图的处理仅限于收集和处理视图上的数据,以及用户请求。 模型:处理业务流程/状态和创建业务规则。 业务流程对于其他层来说是黑盒子操作,模型接受视图请求的数据并返回最终的流程结果。 可以理解“控制器”(Controller )可以接受来自用户的请求并匹配模型和视图,以协同完成用户的请求。 控制层不进行数据处理。 模型对应多个视图,一个视图对应多个模型。 20.1MVC概述、模型、视图和控制器分离以及模型可以具有多个显示视图。 如果用户通过视图的控制器更改了模型中的数据,则依赖于该数据的所有其他视图都必须反映该更改。 因此,无论发生什么样的数据变化,控制器都会通知所有视图变化并更新显示。 这实际上是模型的变化传播机制。 此外,20.1MVC概述和MVC设计模型的优点在于可以在运行单个模型时同时创建和使用多个视图。 视图和控制器之间的连接允许交换视图和控制器对象,或者在运行时交换对象。 模型的可移植性。 由于模型独立于视图,因此可以独立于新平台移植模型。 潜在的框架。 除了设计界面的设计外,您还可以基于此模型创建应用程序框架。 20.2ASP.NETMVC和ASP.NETMVC框架为创建基于MVC设计模型的Web应用程序提供了设计框架和技术基础。 这是一个轻量级、可测试的演示文稿框架,它结合了现有的ASP.NET功能,如主页。 MVC框架在Sytem.Web.Mvc命名空间中定义,并在Sytem.Web命名空间中受支持。 20.2ASP.NETMVC和ASP.NETMVC框架可整合许多用户熟悉的平台特性,包括运行时、身份验证、安全性、高速缓存和配置。 整个体系结构基于标准组件,因此开发人员可以根据需要拆卸和更换组件。 ASP.NETMVC框架是使用用户熟悉的ASPX和ASCX文件开发的,实现了在运行时生成HTML的方法和主嵌套功能。 在该框架中,URL映射到一些控制器类(controllerclasses ),而不是ASPX文件。 NETMVC框架实现了System.Web.IHttpRequest和IHttpResponse接口,增强了单元测试能力。 进行测试时,不需要通过Web要求,单体测试可以不通过控制器直接进行。 可以在没有ASP.NET运行环境的计算机上进行单元测试。 20.2ASP.NETMVC和ASP.NETMVC框架应用将URLs映射到服务器代码,并将URLs映射到控制器类,而不是将URLs映射到ASP.NET页或处理器。 控制器类处理来电,如用户输入和交互式请求,并运行相应的应用程序和数据逻辑。 最后,控制器类通常调用视图组件以生成HTML输出。 从项目模板“ASP.NETMVCWebApplication”创建ASP.NETMVC网站时,ASP.NETMVC应用程序将按照ASP.NETMVC框架中的规定为模型、视图和控制器组件使用20.2ASP.NETMVC和ASP.NETMVC框架创建的网站项目将自动生成这些文件夹和文件。 1.App_Data文件夹的功能与基于Web表单的ASP.NETWeb应用程序的App_Data文件夹相同。2.Content文件夹包含应用程序所需的静态资源文件(图像、CSS样式文件等)。 3.Scripts文件夹包含脚本文件,如JavaScript。 4.Models文件夹模型组件通常存储在Models文件夹(如LINQtoSQL类和ADO.NETEntityDataModel )中,并且还可以存储有关数据访问操作的类和对象定义。20.2ASP.NETMVC和5.Views文件夹视图组件通常存储在Views文件夹中,其中包括. aspx页、 ascx控件和. master主页。 在此说明每个控制器在View文件夹中都有与控制器对应的目录。 6.Shared文件夹可以为视图组件的公共部分创建名为Shared的文件夹。 此文件夹属于所有控制器,而不是单个控制器,并且可以共享主页、CSS样式表等文件。 7 .控制器文件夹控制器组件一般存储在控制器文件夹中,该控制器的命名约定采用XXX控制器方案。 在运行20.2ASP.NETMVC和MVCWeb项目时,将经历1 .获取第一个请求的几个阶段。 在Global.asax文件中,Route对象被添加到RouteTable对象中。 2 .执行路由。 urlRoutemodule对象使用RouteTable集合中的第一个匹配的route对象创建RouteData对象,并使用该对象创建RequestContext对象(IHttpContext对象) 3 .创建MVC请求处理。 MvcRouteHandler对象创建MvcHandler类的实例,并将其传递给RequestContext实例。 4 .创建控制器。 MvcHandler对象使用RequestContext实例检查icontrollerfa对象并创建控制器实例。 5 .执行控制器。 MvcHandler实例调用控制器的可执行方法。 6 .采取行动。 许多控制器从控制器的基类继承,与控制器组合的ControllerActionInvoker对象确定并调用控制器类调用的方法。 7 .执行结果。 典型的行为方式是接收用户输入,准备适当的响应数据,然后返回结果类型以执行结果。 20.3路由、URL路由是基于ASP.NETMVC的网站,URL不是文件目录中的文件,而是描述URL路由的字符串,开发人员自己定义该字符串的格式,以便用户能够理解相关的页面功能20.3.1路由定义URL路由是设置URL模式。 URL路由使用中括号 (URL路由参数)来定义占位符,字符中的“/”等符号在URL路由中作为分隔符进行分析,而不在中括号或中括号内的信息则被视为常量。 例如: controller/action/id/有效的URL路由定义/Products/show/beverages/匹配的路由代码说明:如果定义了包含三个URL路由参数的URL路由,则为Products 在Global.asax文件的Application_Start事件的处理器函数中进行20.3路由和20.3.1定义路由的添加如果设备在测试应用程序时直接调用,则必须静态设置注册根的方法并指定参数RouteCollection。 通过将每个根添加到RouteTable类的静态Routes属性中,最终添加根。 其中,属性Routes是包含ASP.NET应用程序的所有根的RouteCollection对象。、20.3根、20.3.1定义根文件Global.asax的代码片段: protectedvoidapplication _ start (object sender,eventnargse ) register routes (route table ) publicstaticvoidregisterroutes (routeecollaborationroutes ) routes.add (new route ) ( category / action / category name /路由方式定义,new 代码说明:添加了具有两个名称的Route对象: action和category name URL参数。 定义20.3根、20.3.2缺省根时,可以为参数指定缺省值。 如果未在URL中指定此参数值,则使用此默认值。 要设置根的默认值,必须将字典指定给根类的Defaults属性。 defaults=newrouteevalueedictionary/默认地址categoryName 、 food、 Action 、 show代码说明:为定义的URL路由参数创建默认值categoryNam变量的默认值为food,action方法为相应控制器的show方法。 在使用20.3路由和20.3.3路由1 .配置缺省URL路由在ASP.NETMVC项目模板中创建的基本MVC站点上,Global.asax文件具有缺省URL路由并创建的默认URL模式: 控制器/ action / id 允许立即运行的默认值: action=IndexId=null(2) 缺省URL模式:Default.aspx缺省值: controller= home action= index id=null2.添加根添加根的最简单方法是在命名空间System.Web.Mvc中找到route coller 在此类中,用于为路由集合RouteCollection扩展两个方法:(1)IgnoreRoute ()方法以设置主要不需要路由分析的URL地址,其中两个过载方法是(2)MapRoute ()方法用于设定各种路径,总共有6个重负荷的方法。 在构建20.4模型的ASP.NETMVC框架中,模型主要实现应用程序中的数据访问和业务逻辑,并按照规定将模型类存储在Models文件夹中。 您可以使用各种技术来实现数据访问和业务逻辑。 例如,以MicrosoftEntityFramework、NHibernate、Subsonic、ADO.NET类构建的数据访问类。 最常用的是LINQtoSQL类和ADO.NETEntityDataModel。 此外,在20.5控制器ASP.NETMVC中,控制器具有非常重要的角色,该控制器处理用户的请求、路由用户请求的URL、分发与控制器相关联的操作方法和执行适当的商业逻辑。 控制器类通常调用另一个视图组件来生成响应请求的HTML标记。 20.5.1控制器类所有控制器的基类都是Controller类,该类提供通用的MVC处理功能。 控制器类提供了I控制器、IActionFilter和IDisposable接口。 20.5控制器、20.5.1控制器类控制器基类负责以下处理阶段:定位合适的行为方法。 获取行为参数的值。 处理行为执行过程中可能出现的所有错误。 提供渲染ASP.NET页面类型(视图)的默认WebFormViewFactory类。 下面的代码显示了名为HomeController的控制器类的定义。 publicclassmemcontroller :控制器 publicactionresultindex () view data message =欢迎使用ASP.net MVC! . returnView (); 由于20.5控制器和20.5.2ActionResult类型ActionResult是抽象类,因此实际返回的类型是抽象类的子类。 下表列出了ActionResult的子类:20.5.3控制器和20.5.3行为,它们使用ASP.NETMVC应用程序的用户操作以控制器及其行为为中心进行配置。 动作方法由控制器定义。 通常,行为会为每个用户交互创建一对一映射,其中包括在浏览器中输入URL、单击链接或提交表单。 每次这样的用户操作都会向服务器发送请求。 请求URL包含有关MVC框架调用正确行为的信息。下面的代码定义一个控制器,并为该控制器定义一个名为Hello的行为方法。 publicclssmycontroller :控制器 publicationresulthello () /控制器方法 return view ( hello world ) 、20.6视图、ASP.NETMVC框架默认情况下,MVC框架使用从现有ASP.NET页(.aspx )、主页(.master )和用户控件(.ascx )继承的自定义类型生成视图。 通常,在基于MVC的Web工程框架中,所有视图都位于Views文件夹下。 视图不应包含应用程序逻辑或数据库检索代码,具体取决于MVC框架的要求。 使用与由控制器操作提供的MVC视图相关的数据对象,视图渲染正确的用户界面。 20.6视图,视图页面是ViewP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论