精华志京华志出品MVC20随意性总结_第1页
精华志京华志出品MVC20随意性总结_第2页
精华志京华志出品MVC20随意性总结_第3页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、1. 什么是 MVC?答:Mvc不是一种程序语言,严格来说也不算是一种技术,而是一种开发架构(框架),一种开发观念或者一种存在已久的设计模式。Mvc大致分为三个主要单元:Model(模型卜View(试图卜Controller(控制器),简称MVC。2. 什么是 Model功能大致如下: a 定义数据结构B负责与数据库进行沟通C 从数据库中读取数据D 将数据写入数据库中E 执行存储过程F 进行数据格式验证G 定义与验证业务逻辑规则 H 对数据进行加工和处理 简言之:所有对数据有关的任务,都应该在 Model 里完成或定义。3. 什么是 ViewView 负责与用户有关的接口,就是输入与输出。输出

2、指将数据显示在用户接口上,入Html、Silverlight。输入工作则是将用户输入的数据传回服务器。 输出: a 从 Controller 处取得数据,并将数据显示在用户接口上。B决定要使用哪种用户接口,如Html、XML、Siverlight、Flash等。C 负责控制页面的版式、字体、颜色与各种显示方式。D 将 Controller 传送的数据显示在页面上,而数据内容则要参考 Model 的定义。 E 参考 Model 定义的数据格式来定义数据显示方式。输入: A 负责将数据送回 Controller.B。Html 窗口通过 Get 或者 Post 方式传送数据。C. 决定数据应该传送到

3、哪一个Controller的Action中。D 据顶数据传送的方式,如Get、 Post、 XmlHttpRequest.E 决定前段的基本数据格式验证。F提供验证功能,例如使用JavaScript窗口验证字段是否被输入。G 参考 Model 的类的定义,在 VisualStudio 中利用 IntelliSense 编写程序。 简言之:所有要显示在网页上的逻辑都是由 View 负责。4. 什么是 Controllera) 决定与“用户”沟通的渠道。b) 决定系统运作的流程c) 负责从 Model 中获得数据d) 决定应该显示哪个 Viewe) 在发生错误时选择适当的 View 进行响应。f)

4、 网址结构。g) 所有与 View 和 Model 无关的逻辑都由 Controller 定义。5. Controller 与 View 之间的独立性View 尚未创建时,可以先编写 Controller 程序。当 Controller 尚未被创建时也可以先编 写 View 程序。6. View 与 Model 之间的独立性View 大多数参考 Model 里所定义的类,但是这并不是绝对的。7. Model 与 Controller 之间的独立性在没有 Model 的情况下, Controller 与 View 一样可以活的很好。8. 分解关注点a)简化复杂度b)大幅提升可维护性c)更易于测试

5、9. Mvc 与传统的 WebForms 开发有何不同Webforms的问题:1)邪恶的ViewState(使用了如gridview之类的超大控件,程序非常 容易失控 )2)控件组建对 Html 的控制不够直接或太过复杂3)不易于采用Tdd模式进行开发,也不宜与编写单元测试程序。10. Mvc 的优缺点优点: 1 )超清晰框架会强迫你写出比较 WebForms 更易于维护的程序。2)开发性(完全开放源代码)与社区支持。3)可以完全控制 Http 的输出内容。4)优秀的开发效率5)易于测试的架构;6)易于分工的框架缺点:缺乏工具的支持 缺乏成熟的组件化技术的支持。11. Mvc 与 WebFor

6、ms 有哪些相同之处1)共同享用了同一套 A 框架,他们的底层是易于的,两者之间的共同特性是这 两种技术都能实现用IHttpHandler接口来处理网页,例如webforms中的Page页和MVC的MvcHandler 类都实现了 IhttpHandler 接口。12. Mvc 可不可以与 webforms 混在同一个项目里使用。可以。13. 最高效的开发方法M 是 Mvc 的架构中心,由了 Model 之后,就可以让 Controller 与 View 参考这些 Model, 先定义处所有计划开发的 Controller和Action,然后再创建所有 Action对应的View(没有内 容)

7、,之后就可以分别开发不同的 Controller与View,到最后再进行集成即可。14. Mvc 中的 Global.asax.cs项目中的 Global.asax.cs文件中看到一个 RegisterRoutes()方法,此方法是定义网站路径 访问规则的。routes.IgnoreRoute( resource.axd/*pathInfo );routes.MapRoute(Default , / 路由名称controller/action/id , / 带有参数的 URLnew controller = Home, action = Index , id = UrlParameter .O

8、ptional / 参数默认值);这里定义了如下两个默认的网址路由:1 ) IgnoreRoute设定 *.axd 等格式的网址路径不通过 A Mvc 执行。例如, A 内置的 Trace.axd 文件或其他默认的 HttpHandler对象都不通过AMvc进行处理。2 ) Map RouteMapRoute()方法是定义Asp.NetMvc网址路由最主要的方式。每个路由都定义了以下三个参数路由名称对网址路径如何对应到控制器、动作与路由值的设定控制器、动作和其他路由值的默认值通过这个默认的 Map Route方法可以得知,在浏览器输入http:/localhost/Home/About 时,通

9、过Routing的对应,由于网址路径的一部分为“ Home/About ” ,所以会对应处“controller ”为Home”,“ action ”为About ” 因此,Asp.Net Mvc 会先进入Controller ”目录,找到 Home控制器,然后再找到这个控制器内叫About的公开Action,也就是网页的入口。如果直接输入Http:/localhost/来访问网站首页时,通过Rounting的对应,由于网址路径部分没有任何内容,所以会对应默认值来代替。14 Controller类在开发的时候必须符合以下规范类名称一定要以Controller ”结尾,例如GuestbookCo

10、ntroller ”代表 Guestbook 控制 器。继承于Controller基类(或实现Icontroller接口的类)类中须包含数个返回值为ActionResult的公开方法,这些方法在 MVC中被称为Action.15public Acti on Result In dex()ViewDataMessage=欢迎使用 ASP.NET MVC!;return View();public ActionResult About()return View();在Index动作中,第一行的 ViewDate表示一个 Dictionary对象,可以在 View中读取该对象 被设定的数据。第二行的

11、View()实际上来自于 Controller基类的一个辅助方法(Helper Method )他会返回一 个ViewResult对象。ViewResult对象继承自 ActionResult类,主要用途是告知 Asp.NetMvc框 架用户需要回应一个 View,而该View就来自MVC框架设定的默认路径,以Home控制器和此Index动作为例,通过 VIEW()辅助方法可以告知 MVC框架,“我要显示ViewsHomeIndex.aspx 这个网页的执行结果16试图页面页面都应用了“ /Views/Shared/Site.Master ”这个 MasterPage 和 控件等, 这些与We

12、bForms的环境下使用的技术一模一样,但是不一样的框架,不建议在视图中使用 其他内置控件。使用 %: ViewData Message”可以显示在 Controller 里定义的 Message 内容。%: ViewData Message”语法是ASPNET4.0中新增的,总之在之前的版本中,可以用%=Html.Encode(ViewData Message”)语法代替,输出结果一样。17 View 客户端验证输入信息Step01 在 head/head 标签内引入 js 文件script src= ”/Scripts/MicrosoftAjax.js ”type=”text/javasc

13、ript ”/scriptscript src= ”/Scripts/MicrosoftMvcAjax.js ”type= ”text/javascript ”/scriptscript src= ”/Scripts/MicrosoftMvcValidation .js ”type= ”text/javascript ”/scriptStepe02 在 “ 语句之前加入以下声明 如果有多个 BeginForm 就只能在第一个 Form 之前加 上这句话。Stepe03 添加字段验证失败时要现实的错误提示信息首 先 加 入 所 有 验 证 失 败 结 果 的 html.ValidationSum

14、mary() , 方 法 如 下 再为每 个字段加上 Html.ValidationMessageFor() 方法, 以 显示验证失败的提示 : x.姓名)18. 默认网址路由publicstaticvoid RegisterRoutes( RouteCollection routes)routes.IgnoreRoute( resource.axd/*pathInfo );routes.MapRoute(Default , / 路由名称controller/action/id , / 带有参数的 URLnew controller = Home, action = Index , id =

15、UrlParameter .Optional / 参数默认值 );protectedvoid Application_Start()AreaRegistration .RegisterAllAreas();RegisterRoutes( RouteTable .Routes);所有的 web 应用程序执行的入口是 HttpApplication 的 Application_Start() 事件, 所有的 MvcRouting都会在此定义,其中,RouteTable.Routes是一个公开的静态对象,用于存储所有的 Routing 的规则集。代码:protectedvoid Applicatio

16、n_Start()AreaRegistration .RegisterAllAreas();默认RegisterRoutes()方法中的IgnoreRoute()辅助方法用于定义不需要通过Routing处理的网址。代码:routes.IgnoreRoute( resource.axd/*pathInfo );Resource代表一个名为resource的RouteValueg表达式,但其实这里去什么名字都可以, 他只是代表一个变量空间,总之就是代表一个位置,放置一个用不到的变量。*pathInfo 代表一个名称为“ pathInfo 的 RouteValue 表达式,但名称前的( *)的意思

17、是全部,这个名为pathlnfo 的RouteValue表达式的值是完整的路径信息中扣除在Resource 中比对到的部分剩余的网址。例如网址是/Test.asd/a/b/c/d ,则“ pathi nfo 的值为“ a/b/c/d 如果没有加上星号, “pathinfo 的值应该为“ a .其实这里取任何名字都可以,因为它只代 表一个变量的位置。MapRoute ()是最常用来定义 routing 规则的辅助方法。19. 路由比对如果设置多个网址路由,按照规则,当HTTP提出申请后Url会进行网址路由比对,而且是由上而下的一条一条的比对,直到比对到符合的路由为止。20 Action 的重命名

18、 ActionName( Default )public ActionResult Index()return View();此时,如果RouteValue的Action是Index的话,结果就不会被执行,如果是Default才会执行,这就是动作名称选取器。注意的是,return view()返回的 ActionResult也应用了Actio nN ame属性,所以会返回名叫 Default的View而不是In dex的View21 Controller 属性总结在 Controller 中选取 Action 时, 会经过动作过滤器机制的筛选。 并不是所有 Action 都会 执行。1) 找

19、不 到 Action 时 的 处 理 方 法 , 就 会 默 认 执 行 System.web.Mvc.Controller 的 HandleUnknownAction 方法,而且这个方法可以被重写。2) 动作名称选取器,就是 ActionName3) NonAction 属性,就是告诉 ActionInvoker 不要选取这个 Action 来执行,不要对外 公开的意思。4) 会选取公开的方法也就是用 public 来修饰的方法。5) HttpGet 属性是只有来自 get 方式的请求才会允许被应用。6) HttpPost 是只有 Post 请求才允许被应用, 可以将两个重载的方法用不同的 HttpGet 或者 HttpPost 修饰。用来不同的用途。22 ActionResult 类类Controller 辅助办法用途ContentRe

温馨提示

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

评论

0/150

提交评论