05和图书商城项目第八天asp net mvc30高级编程_第1页
05和图书商城项目第八天asp net mvc30高级编程_第2页
05和图书商城项目第八天asp net mvc30高级编程_第3页
05和图书商城项目第八天asp net mvc30高级编程_第4页
05和图书商城项目第八天asp net mvc30高级编程_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

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

文档简介

1、AS.NET MVC 3 高级编程Jon GallowayPhil Haack Brad WilsonK. Scott Allen美著译北京Jon Galloway, Phil Haack,Brad Wilson,K. Scott All n Professional ASP.NET MVC 3EISBN:978-1-118-07658-3Copyright © 2011 by Wiley Publishing, Inc.s. This transl tion publ shed und r licens .本书简体字版由 Wiley P lish g, Inc.或本书内容。者,不得

2、以任何 式北京市版 局著作权合同登记号 图字:01-2011- 436本书封面贴有Wiley 公 防伪无:者不得销售。所有,。在版编目(CIP)数据ASP.NET MVC 3 高级编程/(美)(Galloway, J.) 等著;译. 北京:,2012.6书名原文:Professional ASP.NET MVC 3ISBN 978-7-302-28675-2. A . 加 孙 . 网页制作工具 . TP393.092馆 CIP(2012)第 077614 号责任编辑:王 军 吴 乐装帧设计:责任校对:成凤进责任印制:网地址:址:北京,学研A 座邮邮编:100084购:社 总 机:投稿与读者服务

3、: 质 量 反 馈:印 刷 者:装 订 者:,c-service,zhiliang经开版印定销:新华书店本:185mm×260mm 次:2012 年 6 月第 1 版数:13000价:59.00 元印张:24.5字 数:596 千字印次:2012 年 6 月第 1 次印刷编号:技术编辑简介Eilon Lipton 在 2002 年作为一名开发加入了 Microsoft 公司的 ASP.NET 团队。在ASP.NET 团队里,他既做过数据源控件,也做过 UpdatePanel 控件的本地化工作。现在他是 ASP.NET MVC 框架的首席开发经理,并频繁地在各种有关 ASP.NET 主

4、题的全球会议上。他从波士顿大学毕业,并获得数学和计算机科学双学位。前言对一名 ASP.NET 开发来说,这是一个伟大的时刻!无论是对于已经拥有 ASP.NET 多年开发经验的开发,还是对于刚刚入门的初学者,现在都是深入学习 ASP.NET MVC 3 的绝佳时机。ASP.NET MVC 从一开始就有很多乐趣,再加上现在又添加了很多特性,像新的Razor 视图引擎、集成了NuGet 包管理系统、深度整合了 jQuery 并且具有很强大的可扩展性。因此,使用 ASP.NET MVC 3 会给我们带来很多的乐趣!随着 ASP.NET MVC 新版本的发布,相对的前两版而言,其内容已经变化很多,足以让

5、我们重新编写该书。ASP.NET MVC 团队成员 Brad Wilson 和著名的 ASP.NETK. Scott Allen 加入了我们的作者队伍。因此,我们已经有足够的能力创造一本崭新的书。加入我们会有一个有趣翔实的 ASP.NET MVC 3 之旅!本书读者对象本书适用于希望向中添加完整的测试,以及希望能做出一些与众不同的内容的 Web 开发。本书在有些地方假定读者已经熟悉了 ASP.NET Web Forms,至少已经从了解了一些内容。由于许多 ASP.NET Web Forms 开发对 ASP.NET MVC 感,因此本书有很多地方对这两种技术进行了对比。即便您现在不是 ASP.N

6、ET 开发,即便 ASP.NET MVC 3不是您想要的 Web 技术,但是您仍然可以发现一些章节是很有趣的,不管是出于学习的目的,还是出于摸清来龙去脉的目的。值得再次强调的是,ASP.NET MVC 3 并不是ASP.NET Web Forms 的替代品。很多 Web开发将大量注意力放在了其他 Web 架构上(如 Ruby on Rails、Django),它们融入了MVC(M-View-Controller)应用程序模式;如果您不是这些开发中的一员,或者甚至只是出于好奇,那么本书也适合您。MVC 支持在应用的组件之间实现“更清晰的关注点分离”(但是需要特别)。在后面探讨这些分支,但是如果必

7、须以一句话来概括的话,那就是:ASP.NET MVC 3是去掉了的ASP.NET。ASP.NET MVC 3 是一个修补型的架构,它提供了对 HTML 和JavaScript 的细粒度在 MVC 中没有以及对应用程序编程流程的完全。性的服务器控件,有些人可能会喜欢这些控件,而有些人则可能ASP.NET MVC 3 高级编程不喜欢。在的将来,MVC 团队可能会添加性的视图控件,但是这些控件将与ASP.NET Web Forms 开发熟悉的组件大相径庭,这些控件中封装了渲染视图的逻辑以及用于响应用户输入的逻辑等。将所有这些逻辑封装在视图的单个控件中会“关注点分离”这一框架的。这样就会使抽象的层次倒

8、塌,就像所有的窗户都被敞开空气自由。我们给您的最后一个比喻是,ASP.NET MVC 像是摩托车,而 ASP.NET Web Forms 可能像是小型货车,而且配备有安全气囊以及 DVD器,这样在驱车去岳父家赴周五晚宴的时候,如果有小孩的话,可以避免他们在车上打闹。有些人喜欢摩托车,有些人则喜欢小型货车。它们都可以带您去想去的地方,但是从技术讲,它们都并不胜于对方。本书组织结构本书共 14 章,主要介绍了 MVC 模式以及 ASP.NET MVC 是如何实现该模式的。其中的第 1、2、7Jon Gallowany 编写,第 3、9、10Phil Haack 编写,第 4、5、6、8Scott

9、Allen 编写,第 11、12、13编写。Brad Wilson 编写,第 14 章则由 4 位作者共同第 1 章帮助您开始进行 ASP.NET MVC 3 开发。首先介绍了 ASP.NET MVC 的概念, 然后解释 ASP.NET MVC 3 如何顺应前两个发布版本。最后,在确保正确安装软件之后,帮助您开始创建您的第一个 ASP.NET MVC 3 应用程序。第 2 章讲解器和操作的基础内容。您开始编写一些基本的“hello world”示例,然后创建从 URL 中提取信息并在屏幕上显示的应用程序。第 3 章介绍如何从器操作中使用视图模板输出的可视化表示。除此之外,还将全面地介绍ASP.

10、NET MVC 3 中包含的新视图引擎 Razor。第 4 章继续介绍 MVC 模式的第三个元素:模型。本,您将会学习到如何使用模型在器和视图之间传递信息,以及如何在Entity Framework 4.1 上集成数据库和模型。第 5 章深入讲解编辑场合,解释 ASP.NET MVC 处理表单的方式。您将从本到如何使用 HTML 辅助方法精简视图。第 6 章介绍如何使用特性定义模型显示、编辑和验证的规则。学习第 7 章讲解如何确保ASP.NET MVC 应用程序安全,并指出常见的安全陷阱以及避免这些陷阱的方法。除此之外,您还会学习到如何利用 ASP.NET MVC 应用的ASP.NET成员资格

11、和特性来权限。第 8 章介绍 ASP.NET MVC 应用的Ajax特别强调 jQuery 和 jQuery 插件。本,您将会学习到如何使用 ASP.NET MVC 的 Ajax 辅助方法,以及如何高效地应用 ASP.NET MVC 3 中包含的 jQuery 验证系统。第 9 章深入介绍用来管理如何把 URL到器操作的机制。VIII前言第 10 章介绍 NuGet 包管理系统。通过本章内容,您将学习到如何把 NuGet 关联到ASP.NET MVC,如何安装 NuGet 以及如何使用NuGet 来安装、更新和创建新包。第 11 章介绍依赖注入,ASP.NET MVC 3 的变化包括对依赖注入

12、的支持,以及如何在应用利用依赖注入。您如何在 ASP.NET 应用第 12使用测试驱动开发,并提供编写高效测试的一些有益忠告。第 13 章深入讲解ASP.NET MVC 中的扩展点,并展示如何扩展 MVC 框架来满足您的具体需求。第 14 章介绍一些高级主题,这些主题在阅读本书前 13 章之前讲解可能会使您感到吃力。本章涵盖 Razor、基架系统、机制、模板和器的一些复杂应用。使用本书的条件为了使用 ASP.NET MVC 3,您可能需要安装Visual Studio。可以使用 Microsoft Visual Web Developer 2010 Express 或 Visual Studi

13、o 2010 的任何版本(如Visual Studio 2010Professional)。Visual Studio 2010 中包含了ASP.NET MVC 3。下面展示了所需软件的: Visual Studio 或Visual Studio Express:com/express/。或. ASP.NET MVC 3:。第 1深入回顾软件需求,并展示如何在开发环境和服务器上进行设置。源代码整本书中,您会注意到,当建议您安装NuGet 包以尝试一些样例代码时,我们会放置如下图标:Install-Package SomePackageNameNuGet 是Outercurve Foundati

14、on 为.NET 和Visual Studio 而编写的新包管理器,后来被Microsoft 公司整合到了 ASP.NET MVC 中。我们不用再在 Wrox上搜索源代码示例的压缩文件了,因为我们可以通过使用NuGet 轻松地把这些文件添加到 ASP.NET MVC 应用再痛苦,而变得更容易、更方便。我们认为自此尝试样例将不第 10详细介绍NuGet 系统。在某些情况下,书中涵盖了一些您可能想或的单独代码段。这些代码可以在上。登录该之后,只需要使用IXASP.NET MVC 3 高级编程Search 框或标题列表中的一个找到书的标题,单击本书详细页面上的 Download Code,即可本书涉

15、及的所有源代码。在了代码后,只需要用可以进入喜欢的解压缩软件对它们进行解压缩即可。另外,也上的 Wrox 代码页面,查看本书和其他 Wrox的源代码。勘误表尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果您中找到了错误,例如拼写错误或代码错误,请告诉我们,非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。请给 wkservice 发电子邮件,我们就会检查您的信息,如果是正确的,我们将要在的后续版本中采用。上找到本书的勘误表,可以登录,通过 Search 框或书名。在这个页面上可以查看到列表查找本书,然后的详细页面上,单击Book E

16、rrataWrox 编辑已提交和粘贴的所有勘误项。完整的booklist.shtml。列表还包括每本书的勘误表,是P2P.WROX.COM要与作者和讨论,请加入 上的 P2P。这个是一个基于 Web的系统,便于您张贴与 Wrox相消息和相关技术,与其他读者和技术用户交流心得。该提供了订阅功能,当上有新的消息时,它可以给您传送感的论题。Wrox作者、编辑和其他业界在和读者都会到这个上,有许多不同的上探讨问题。,它们不仅有助于阅读本书,还有助于开发(1)(2)(3)(4)的应用程序。要加入,可以遵循下面的步骤:进入 ,单击 Register。阅读使用协议,并单击 Agree 按钮。填写加入该所需要

17、的信息和希望提供的其他信息,单击 Submit 按钮。您会收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。X注意:不加入 P2P 也可以阅读上的消息,但要张贴的消息,就必须加入该。前言加入后,就可以张贴新消息,响应其他用户张贴的消息。可以随时在 Web 上阅读消息。如果要让该给特定中的消息,可以单击列表中该名旁边的 Subscribe to this Forum 图标。关于使用 Wrox P2P 的信息,可阅读 P2P FAQ,了解软件的工作情况以及 P2P和 Wrox的许多常见问题。要阅读 FAQ,可以在任意P2P 页面上单击 FAQ。XI序我很高兴参与了本书前两版的编写工作。

18、当我决定不参与第 3 版的编写时,我不知道谁能胜任这份工作。谁能够填补我留下的空缺呢?嗯,我知道只有这 4 位最聪明、最优秀的研究可以胜任,他们每一个都远比我知识渊博。Phil Haack 是 ASP.NET MVC 项目经理,他从一开始就参与该项目。因为他有植根于社区和开源的背景,所以我一向认为他不仅是一名优秀的技术,而且还是一位亲密的朋友。Phil 目前从事于 ASP.NET 和称作 NuGet 的新.NET 包管理器的研究。现在我和 Phil 都在 Web 平台和工具团队,我们俩正努力将 Microsoft 公司的 ASP.NET 和开源项目推向一个新的高度。Brad Wilson 不仅

19、是我最爱的怀疑论者,而且也是 Microsoft 公司 ASP.NET MVC 团队中一名天才般的工程师。从动态数据到数据注解,再到测试等,没有作为程序员的 Brad 干不了的。他从事过许多开源项目(如 XUnit.NET),并继续推动 Microsoft 公司内外部光明。Jon Galloway 在 Microsoft 公司的开发指导小组(Developer Guidance Group)工作,在那里他有机会接触成千上万的不熟悉 ASP.NET MVC 的开发。他负责编写了 MVC MusicStore,该帮助成千上万的开发编写了他们的第一个ASP.NET MVC 应用程序。Jon 也帮助组

20、织 mvcConfASP.NET MVC 开发的一系列会议。他与各种如何开始、学习和掌握ASP.NET 社区的互动使得他拥有很强的洞察力,知道开发ASP.NET MVC。最后也是相当重要的是,K. Scott Allen 增强了团队的力量,不仅仅是因为他明智地决定使用他听起来更加智能的中间名,而且也因为他带来了一个世界级著名的经验和智慧。Scott Allen 是 Pluralsight 技术中的一员,曾经在50 强公司从事和创业咨询方面的工作。他善良、体贴、值得尊重,重要的是他非常透彻地了解。随着 ASP.NET Web 开发平台的发展,这些伙计团结在一块儿共同把ASP.NET MVC 3高

21、级编程一书推到了一个新的高度。该平台目前正在由全球数百万的开发使用。一个充满朝气的社区支持该平台的千上万的问答。版和离线版;线上()平均每天都有成ASP.NET 和ASP.NET MVC 3 的应用面很广,像、网上零售商店以及我们最喜欢的社交。除此之外,或许我们当地的运动队、读书或博客使用的也是ASP.NET MVC 3 高级编程ASP.NET MVC 3。当 ASP.NET MVC 刚刚被引入时,它打破了很多领域。尽管使用的是旧模式,但是这些模式对于现有的ASP.NET 社区来说的;它在生产率和、功能和灵活性之间求得了微妙的平衡。今天,对我来说,ASP.NET MVC 3 代表了选择语言的选

22、择、框架的选择、开源库的选择、模式的选择。一切都是可插拔的。ASP.NET MVC 3 是我们对环境绝对的缩影如果喜欢,就使用;如果不喜欢,就改变。我们可以按照想要的方式进行单元测试,创建想要的组件,使用选择的 JavaScript 框架。ASP.NET MVC 3 为我们带来了新的 Razor 视图引擎、一个通过 NuGet 可扩展的集成基架系统、使用项目模板的HTML 5、与依赖注入和全局操作过滤器的强关联,以及强大的JavaScript 支持(其中包括非侵入式的JavaScript、jQuery 验证和 JSON 绑定)。ASP.NET MVC 团队已经创建了他们惊人框架的第 3 个版本

23、,并且已经发布了源代码。我建议到上最新的内容,以及最新的示例、和。我们都希望本书讲解的内容能够是您精通ASP.NET MVC 3 历程中的。Scott HanselmanMicrosoft Web 平台和工具团队首席社区架构师VI致谢感谢家人和朋友,他们给了我良好的精神状态。感谢整个 ASP.NET 团队,自 2002年以来,他们给我带来了无穷的工作乐趣,尤其是Brad Wilson 和 Phil Haack,他们回答了我成千上万个问题。最后感谢Philippians 4:4-9 时刻提醒我哪种方式是正确的。 Jon Galloway感谢我亲爱的妻子Akumi,是她极大的支持才使得该书得以完成

24、。我也想喊出对儿子 Cody 的感谢,是他给了我一个两岁孩童能够给的明智建议自此他会尴尬 10 年,因为在我对他的感谢中用了一个与点亮了我们的房间。不符的词“喊出”。感谢女儿 Mia,是微笑Phil Haack作 者简介Jon Galloway 是 Microsoft 公司社区项目经理,主要从事于 ASP.NET MVC 项目。他负责编写了 MVC Music Store会议),2010 年,他,并帮助组织 mvcConf(一个的 ASP.NET MVC 社区世界为 Web Camps 教授 MVC 课程。Jon 曾经供职于 VertigoSoftware,在那里,他主要负责一些 Micros

25、oft 会议、支持 High Profile 的 Silverlight 视频器,还有 MIX 主题演示。在这之前,他曾在很多 Web 开发公司任职,从朝气蓬勃的创业公司到他的博客地址为500 强企业。他是 Herding Code 博客()的一部分,账户名是jongalloway。、Phil Haack 是一名高级项目经理,和 ASP.NET 团队一起从事于 ASP.NET MVC 项目。在加入 Microsoft 公司以前,Phil 做过代码搜索引擎的经理,做过公司的开发经理,还做过一个很受欢迎的西班牙语的电视网络的高级架构设计师,除此之外,他还做过其他一些疯狂的职业。作为一个代码“瘾君子

26、”,Phil Haack 喜欢设计软件。他不仅喜欢编写软件,而且喜欢撰写关于软件和软件管理的博客,他的博客为. com/。在业余时间,Phil 参加各种开源项目,他是 Subtext 博客引擎项目的创始人,当然,该项目目前正在使用ASP.NET MVC 重写。Brad Wilson 是 Microsoft 公司的一名高级软件开发工程师,在 Web 平台和工具(WebPlatform and Tools)团队从事于 ASP.NET MVC 项目。在 2005 年,他加入了 Microsoft 公司的模式和实践(Patterns and Practices)团队,同时也在构建 CodePlex 开

27、源托管站点团队中工作。在加入 Microsoft 公司之前的 20 年里,他就已经在各种软件公司做过开发、架构师、团队组长和 CTO(首席技术官)。他也是 xU 开源开发测试框架的作者 JamesNewkirk 的合作作者。自从 2001 年,他就积极地编写博客,主要讲解一些ASP.NET 主题,他的博客是。他的账户名是bradwilson。K. Scott Allen 是OdeToCode制开发、咨询和指导服务。公司的创始人。Scott 为世界各地的客户提供定目录2.3示例应用程序:MVC Music Store23器基础26入门1ASP.NET MVC 简介1第 1 章.

28、1ASP.NET MVC 如何适应ASP.NET1MVC 模式简介2MVC 在 Web 框架中的应用2ASP.NET MVC 3 的发展历程3Razor 视图引擎5简单示例:Home Controller .26创建第一个(非常简单的)器29器操作中的参数3..32.4.3小结33视图35视图的作用36指定视图38强类型视图39视图模型41添加视图4第 3 章...9. 8验证的强大的 JavaScript 支持9高级功能9ASP.NET MVC 3 特性总结101.2

29、创建 ASP.NET MVC 3应用程序103.5.1 Add View框中的选项42自定义 T4 视图模板451.2.1创建 ASP.NET MVC 3应用程序的软件要求11安装 ASP.NET MVC 311创建 ASP.NET MVC 3应用程序12New ASP.NET MVC 3 Project框133.5.2Razor 视图引擎463.6Razor 的概念4....8代码表Html 编码50代码块51Razor 语法示例52布局54ViewStart5ASP.NET MVC 应

30、用程序的结构17小结20器21指定分部视图57视图引擎5第 2 章2.12.2配置视图引擎58查找视图5.2. 21器的器简史22ASP.NET MVC 3 高级编程视图本身60其他的视图引擎61模板辅助方法10..10 辅助方法和 MState . 106其他输入辅助方法1073.9新的视图引擎还是新的ActionResult62小结63模型65为 MVC Music Store 建模65为商店管理器构造基架685.3Html.Hidden107Html.Password10. H

31、tml.RadioButton107第 4 章4.14.2Html.CheckBox1085.3.4渲染辅助方法10Html.ActionLink 和Html.RouteLink109URL 辅助方法110Html.Partial 和Html.RenderPartial110Html.Action 和Html.RenderAction111基架的概念68基架和实体框架69执行基架模板71执行基架代码7...3编辑专辑7. 794.3.1 创建编辑专辑的4.3.2 响应编辑时的 POST 请求81模型绑定8

32、3小结113数据注解和验证115为验证注解订单1165.54.4Binder84第 6 章 DefaultM模型绑定安全性简介85显式模型绑定8.3验证注解的使用117自定义错误提示消息及其本地化1.2小结86表单和 HTML 辅助方法89表单的使用895.1.1 action 和 method 特性905.1.2 GET 方法还是 POST 方法90HTML 辅助方法944.5第 5 章5.1原理1.4注解的器操作和验证错误123自定义验证逻辑1256.2自定义注解126.2.2 IValidatab

33、leObject128显示和编辑注解129自动编码95辅助方法的使用95HTML 辅助方法的工作原理96设置专辑编辑表单97添加输入元素98辅助方法、模型和视图数据102强类型辅助方法104辅助方法和模型元数据10.Display130ScaffoldColumn130DisplayFormat131ReadOnly131DataType132UIHint132HiddenInput13......8小结1326.4XIV目录应用程序的安全性133使用

34、 Authorize 特性登录135辅助方法之外194第 7 章7.18.4jQuery UI1948.4.1器操作13.2保护8.4.2 使用 jQuery UI 实现自动完成部件1958.4.3 JSON 和 jQuery 模板199提高 AJAX 性能204Authorize 特性在表单验证、AccountController器中的用法139Intranet Application 模板中的Windows Authentication1418.5使用内容分发网络204优化20.18.5.2器的安全性141小结205机制207理解 URL208机制概述2

35、097.1.4要求8.6整个7.2成员使用 Authorize第 9 章9.19.2特性142和成员143的安全向量1437.37.4扩展Web 应用.和 URL 重写20...69.2.7对比.14..47.4.5威胁:跨站的定义209.154威胁:跨站请求威胁:cookie. 217命名.158.219MVC 区域威胁:重复提交160Catch-All 参数220段中的多个 URL 参数221StopRoutingHandler 和IgnoreRoute222的调试223如何生成 URL224如何绑定

36、到操作230.162威胁:开放重定向适当的错误报告和堆栈跟踪. 1707.5使用配置转换17.5.2 使用 Retail 部署配置1727.5.3 使用专门的错误日志系统17.9. 1727.67.7安全回顾和有用9.3.小结173. 230.2自定义次请求的AJAX175jQuery175第 8 章8.1数据230约束23机制232jQuery 的特性176Web Forms 和.2 非侵入式 JavaScript179小结233NuGet235NuGet 概述235NUGET 安装236以包的形式添加库2

37、38jQuery 的用法1808.1.3第 10 章AJAX 辅助方法1838.2.1 AJAX 的ActionLink 方法1838.2HTML 5 特性185AJAX 表单18.3.239.210.3.3查找包客户端验证1888.3安装包240更新包242.1898.3.1 jQuery 验证自定义验证1908.3.2XVASP.NET MVC 3 高级编程最近使用的包24310.3.412.2.2 只测试编写的创建包245代码290单元测试用于ASP.NET MVC应用程序的技巧和窍门29110.4文件夹结构246NuSpec

38、 文件246元数据247依赖库24812.3.210.4.310.4.4器测试291测试296验证测试298.212.3.310.4.5 指定要包含的文件249小结302扩展 ASP.NET MVC303模型扩展304工具24912.45210.4.7 框架和轮廓第 13 章13.1发布包25310.5.1 发布到 NuG25310.5.2 使用NuGet.exe 发布包25610.513.1.1把请求数据转化为模型304用元数据描述模型309验证模型312包浏览器的用法25710.5.3.310.5.4

39、托管私有的 NuGet供应库258小结261依赖注入263软件设计模式概述263视图扩展31513.210.6自定义视图引擎315.2 编写 HTML 辅助方法. 31713.2.3 编写 Razor 辅助方法319器扩展319第 11 章11.113.311.1.1设计模式反转操作选择319操作过滤器321提供自定义结果323模式264设计模式服务.266设计模式依赖注入270器的用法27.213.3.311.1.2小结324高级主题325高级 Razor32514.1.1 模板化的 Razor 委托32513.411.1.3依赖

40、.211.2.311.2第 14 章14.1服务274服务275单一复合创建任意对象278视图编译32614.1.2小结280单元测试281单元测试和测试驱动开发的意义28211.3高级基架32814.2自定义 T4 代码模板328NuGet 包MvcScaffolding329更新的 Add Controller框选项329使用库模板330添加基架器332第 12 章.3单元测试的定义28.2 测试驱动开发的定义283创建单元测试项目28612.2.1 检查默认单元测试28714.2.414.2.514.2.612.2源332额X

41、VI目录. 332RouteMagic33214.3高级.2ControllerBase 抽象基类346器类和操作346ActionResult351操作调用器359使用异步器操作362.33314.3.2 可编辑的14.5.314.5.414.5.514.5.6模板33714.4默认模板338自定义模板342器344.2高级14.5.1小结37014.514.6定义器:IController接口344XVII2第控章制器本章主要内容器的 器简史示例应用程序:MVC Music Store器基础本章阐述器如何响应用户的 HTTP 请求并将处理的信息返回给

42、浏览器;重点介绍器和器操作的功能。由于到目前为止还未涉及到视图和模型,因此本的器行为示例会稍微超前。不过本章内容为接下来几章的学习奠定了基础。第 1 章首先概括地介绍了模型-视图-器模式,随后对 ASP.NET MVC 和ASP.NETWeb Forms 进行了比较。接下来开始深入地介绍 MVC 模式中的三个制器。元一 控2.1器的讨论一个问题最好的方式是从其定义开始,然后再深入讨论其细节。在阅读本章时,牢记器的定义,这将为理解器含义及其用途打下坚实的基础。您可能要记住如下的快速定义:MVC 模式中的器(Controller)主要负责响应用户的输入,并且在响应时通常会修改模型(M)。通过这种方

43、式,MVC 模式中的器主要关注的是应用程序流,输入数据的处理,以及对相关视图(View)输出数据的提供。过去的 Web 服务器支持对以静态文件页的流行,Web 服务器也支持由同样在服务器磁盘上的HTML 页面的。随着生成的 HTML在服务器磁盘上的动态ASP.NET MVC 3 高级编程页面。使用 MVC,情况就略有不同。URL 告知机制(将在第 4 章介绍)去实例化哪个控制器,调用哪个操作方法,并为该方法提供需要的参数。然后由个视图,并随后对该视图进行渲染。器的方法决定使用哪URL 不是与在 Web 服务器的硬盘上的文件有直接对应关系,而是与器类的一个方法有关。ASP.NET MVC 实现对

44、 MVC 模式中的前端器进行了改进,正如第 9会介绍的,子系统在最前面,然后才是器。理解 MVC 模式在 Web 场景中工作原理的一个好方法就是记住:MVC 提供的是方法调用的结果,而不是动态生成的(又名)页面。2.2器简史MVC 已经出现很长一段时间了可以追溯到现代 Web 应用程序来临前的几十年。当 MVC 第一次开发出来的时候,图形用户界面(GUI)才刚刚起步没几年,且在不断演化发展。当时,当用户按下一个按键或单击屏幕时,某个进程将会“听到”他们的动作,器。器主要负责接收和解释输入,并更新任何需要的数据类(模型),这个进程就是然后通知用户进行了修改或程序更新(视图,将在第 3详细介绍)。

45、在 20 世纪 70 年代末和 80 年代初,Xerox PARC(刚好也是 MVC 模式诞生的地方)的研究员开始研究 GUI 的概念,在 GUI 中用户“工作”在一个虚拟的“桌面”环境中,在这种环境下,用户可以单击和来回拖拽条目。从这里产生了驱动编程的思想根据用户触发的(如单击鼠标或是敲击键盘上的按键)来执行程序操作。后来,随着 GUI 逐渐成为规范,MVC 模式全适合这些新系统这一点变得更加清晰。在这类系统中,由 GUI 组件本身负责处理用户输入,比如当按下一个按钮时,是该按钮本身响应鼠标单击,而不是器。按钮转而将依次通知所有单击的观察者或侦听者它被单击了,相对于 MVC 模式而言,另一些

46、模式(如模型-视图-表示器 MMVP)证明是与这些现代系统更相。-View-Presenter,ASP.NET Web Forms 是一种基于它拥有一个强大的基于控件并由的系统,这在Web 应用程序平台中是独一无二的。驱动的编程模型,从而为开发进行Web 开发提供了一个良好的组件化的 GUI。当单击一个按钮时,Button 控件将会做出响应,并在服务器端一个以告知它被单击。这种方法的妙处在于它可以让开发在更高的抽象级别下编写代码。然而,进行更深入的分析会发现开展的很多工作都是在模拟这种组件化的驱动。然而本质上,当单击一个按钮时,浏览器将向包含了页面上的控件的状态的服务器提交一个请求,其中控件所

47、在的页面被封装在一个编码的隐藏输入中。在服务器端,应该请求,ASP.NET 必须重建整个控件层次结构,然后解释请求,并利用请求的内容去恢复应用当前用户的当前状态。究其本质而言,所有这些都是因为 Web 是无状态的。使用富客户端的 Windows GUI 应用程序时,没必要每当用户单击一个UI 小就重建整个22第 2 章 控 制 器屏幕和控件层次结构,因为应用程序保持了原状态,不曾改变。对于 Web 程序而言,用户的应用程序状态实质上是消失的,只不过是后来用户每次单击后都会恢复。虽然这会极大地简化程序,但是以 HTML 形式出现的用户界面将会从服务器到客户端浏览器。这就一个问题:“应用程序在哪里

48、?”,对于大多数 Web 页面而言,应用程序就在客户端和服务器之间“舞蹈”,每次都维持一个小状态,可能是客户端的一个cookie 或是服务器上的一块内存,一切都被地设计来掩盖一个小小的“”,这个“”就是 Internet 和 HTTP 可以进行有状态的编程。当进行 Web 开发时,对由愿接受这个虚拟有状态的平台的其做了一点轻微的改动)。驱动的编程方法的支撑作用将不复存在,并且许多人不。鉴于此,业界已经了 MVC 模式的复兴(尽管对下面给出一个这种改动的示例。在传统的 MVC 模式中,模型可以通过与视图的间接来“观察”视图,这就MVC 模式而言,当视图被模型根据视图的来自我调整。对于在Web 开

49、发中应用到客户端浏览器时,模型通常不在内存当中,所以就不再能观察视图上的(注意,当本书在第 8讨论将 AJAX 运用到 MVC 中时,将看到这一改动的例外情况)。在 Web 开发中采用 MVC 模式,器再次走在了前列。应用 MVC 模式要求 Web 应的每一个用户输入只采用请求的方式。例如,在 ASP.NET MVC 中,每个请求都用被(使用将在第 4介绍)到器的一个方法(又称操作),该器全权负责解释这些请求,如果必要的话,还要模型,然后通过响应选择一个视图反馈给用户。上面学习了一部分理论知识,接下来深入讲解ASP.NET MVC器的具体实现。我们将继续使用第 1 章创建的项目。如果跳过了第 1新项目的创建,请参照上一的步骤,使用 Internet Application 模板和 Razor 视图引擎创建一个新的ASP.NET MVC 3 应用程序,最终结果如图 1-9 所示。2

温馨提示

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

最新文档

评论

0/150

提交评论