亲爱的读者,非常感谢您选择了这本书,也欢迎您开始学习最新版本的《ASP.NET MVC网站编程案例精解》,本书已完全升级到ASP.NET MVC 1.0!写作本书的最初想法是在ASP.NET 1.0诞生的同一年(即2001年)萌发的,最初的目的就是讲解如何实现一个真正的网站。本书第1版于2002年出版,很幸运,这本书获得了成功。因此,我们希望在ASP.NET 2.0发布之后能够将本书进行更新和升级。本书的第2版在2006年问世,受到了开发人员的欢迎,再次获得了成功。我们认为,本书之所以能够取得成功,是因为市场上绝大部分关于ASP.NET的书籍都是参考手册性质的,这些书籍面面俱到地介绍了这个架构中的各个控件,包括这些控件的所有方法和属性,但是这些书籍所提供的示例却常常过于简单,往往只是介绍了控件的某一项功能而已。这些参考手册性质的书籍没能说明应该如何把ASP.NET的各种功能和控件集成在一起来构成一个功能丰富的网站,而这恰恰是读者在实际工作中最为需要的内容。真正的网站开发与简单的小例子是完全不同的,所以本书的内容真正地帮助开发人员解决日常工作中所遇到的问题。 本书的最新版本是完全重新编写的,尽可能地使用了ASP.NET MVC 1.0的所有功能,并在以下方面进行了改进:书中所开发的项目更加完善(例如,更新了电子商务模块和一个Web 2.0风格的论坛模块),也更为专业化(例如,整个网站都使用了CSS等当前的主流设计技术);同时,本书在每一章内容中都尽可能详细地介绍了ASP.NET MVC 1.0的相关背景知识,即使是完全没有这方面经验的读者也能够顺利地阅读和理解本书的内容,在第1版中未能实现这一点。 首先,本书的目的是描述、设计和实现一个读者很有可能在工作中遇到的网站,同时利用各种机会介绍和解释ASP.NET MVC 1.0架构所提供的各种激动人心的新功能。本书不会为了简化我们的开发工作而避重就轻;相反,本书尽可能地把读者在开发网站过程中可能遇到的各种问题都解释清楚,同时提供一种或多种解决方案。 其次,我们根据问题、设计和解决方案把每一章分成若干节,然后根据模型、视图和控制器(MVC)把每节划分成若干个小节。之所以如此划分,是为了抛弃传统的解释ASP.NET的方法,转而使用从数据库到用户界面(database-to-user-interface)的思路来解释项目的开发,这样读者在学习一项内容的过程中就能够获得所有的相关知识,然后翻到下一页再重复这个过程。在学习ASP.NET的过程中,传统的方法并不适合于MVC,我们觉得使用MVC的思路真正理解ASP.NET MVC是非常重要的,而不能用传统的ASP.NET Web Forms的思路来理解ASP.NET MVC。我们希望本书所介绍的MVC方法能够让读者更加完整地理解MVC的概念,从而在开发自己的MVC应用程序时能够按代码的功能(或关注点)把代码分成逻辑块,并从中学习到知识的内涵。这样,读者才能深刻地理解MVC的基本原理,而不会错误地使用Web Forms的思路开发MVC应用程序。 本书最终开发出来的网站采用了基于CSS的页面布局,具有完整的成员资格系统(membership system),还提供了能够发表和同步网站文章并支持投票和邮件列表的内容管理系统(Content Management System)。网站支持Web 2.0风格的论坛,还支持能够通过PayPal实时处理信用卡的网上商店,并提供了本地化功能(网站所实现具体功能的详细列表请参见本书第1章)。我们希望读者能够乐于阅读本书,并希望帮助读者在新项目开发工作中提高开发效率,使得开发的网站具有更好的健壮性、可扩展性,并具有更好的整体架构。 本书内容简介 本书实际上是一个大型的项目案例研究,这个项目案例从各项基础工作开始,通过采用各种设计方案和解决方案,一步步地添加了各种新的功能,最终实现了整个项目的完整功能。与其他Wrox系列书籍相比,“问题-设计-解决方案”系列书籍的独特之处就在于书籍的结构以及针对项目从始至终的完整描述。本书将会带领读者经历一个完整的ASP.NET MVC 1.0网站的开发历程,这个网站不仅提供了目前比较时髦的功能,还提供了电子商务网站的功能,而这正是当前大部分用户需要的功能。这些功能具体包括: ● 账户注册 ● 按类别组织的新闻和事件 ● 投票 ● 新闻组 ● 论坛 ● 具有购物车和订单管理功能的网上商店 ● 本地化 从网站管理人员的角度来看,本书还涵盖了以下功能和问题: ● 完善的在线后台管理功能,能够通过直观的用户界面管理各种数据 ● 网站部署 在实现这些功能的过程中,我们将会学习ASP.NET MVC 1.0所引入的各种新功能和新概念,具体包括: ● 模型(Model)的概念 ● 视图(View) ● 视图引擎(View Engine)的作用 ● 视图母版页(View Master Page)、视图页面(View Page)和视图用户控件(View User Control)的使用方式 ● 利用视图数据(View Data)和临时数据(Temp Data)在控制器操作和视图之间传送数据 ● HTML和AJAX扩展方法的使用 ● 如何在MVC中使用jQuery ● 控制器(Controller) ● 控制器工厂(Controller Factory)的作用 ● 利用路由(Route)创建REST风格的URL ● 控制器操作(Controller Action) ● 利用操作筛选器、操作结果和操作选择器来加强应用程序 我们还将使用.NET 3.5提供的以下新功能,这些新功能都可以通过使用C# 3.0进行编程: ● LINQ ● LINQ-to-SQL ● 扩展方法 ● 匿名方法 此外,读者还将学到如何把这些新功能和新概念与标准的ASP.NET 2.0功能集成在一起,这些标准的ASP.NET 2.0功能包括: ● 母版页(master page) ● 成员资格(membership)和用户配置(profile)模块 本书不仅介绍了ASP.NET MVC 1.0的各种新功能,还演示了如何将这些新功能集成在一起以构成一个功能完整的网站。书中将会解释和探讨所有的设计思路(包括数据库设计、模型、视图和控制器设计以及网站的体系结构);本书最后一部分内容将介绍多种在稳定、可伸缩、可扩展的架构基础上进行Web开发的实践技巧。 本书的组织结构 本书完整地构建了一个项目。除前两章外,本书每一章内容将介绍这个大项目中的一个独立模块,每章内容分为3节: ● 问题:确定本章要解决的问题:本章将要做些什么?本章需要为网站添加什么功能?为什么要添加这些功能?存在哪些限制?还要考虑什么因素? ● 设计:在明确了需要解决的问题之后,接下来我们必须知道需要使用哪些功能来解决这个问题。这样就能够大体知道问题的解决方案,或在解决该问题的过程中将会涉及哪些技术。 ● 解决方案:在确定了设计思路之后,我们已经知道应该如何解决一开始所提出的问题。本节将提供解决该问题所需的所有代码和其他各种材料。与本书所提供的完整解决方案一样,每一章都会为其所针对的问题提供一个完整的解决方案。读者在这里能够获得实际动手练习的机会,并亲自创建这些代码。 第5章到第11章中的设计和解决方案两节将会进一步细分为多个小节: ● 模型 ● 控制器 ● 视图 在这几章的设计和解决方案两节中,每个小节的内容都能够帮助读者进一步巩固MVC的概念。 希望读者能够从头到尾按顺序阅读本书,这样读者就能够从一无所有开始,最终完成并部署一个随时可以联机运行的网站。当然,由于本书模块化的结构特点,每一章内容都独立地实现了一个功能模块,所以如果有需要的话,读者完全可以将本书中实现的具体模块单独拿出来,应用到其他网站中。 本书面向的读者 首先要说明本书并不适合没有任何经验的新程序员,也不适合从未接触过ASP.NET和.NET Framework的程序员。本书讲述的是如何从基础开始编写一个真正的网站,所以不可能事无巨细地介绍各种技术细节,只能把重点放在设计和实际解决方案的实现上。如果读者希望顺利地阅读本书,那么应该具备一些ASP.NET 2.0方面的基础知识,当然,只要具备基础知识就可以。我们并不要求读者接触过ASP.NET MVC,因为每一章内容都会介绍与此有关的概念和功能,这样就可以为具体实现和解决方案提供足够丰富的背景信息。如果读者希望进一步学习涉及某个功能的全部知识内容,那么可以参考MSDN官方文档,也可以参考其他参考手册类型的书籍,例如Wrox出版的《ASP.NET MVC 1.0高级编程》一书。 阅读本书过程中所需要的软件环境 如果读者打算在自己的计算机上构建本书所介绍的项目,或者运行下载的代码,那么就需要以下软件环境的支持: ● Windows XP、Windows Server 2003、Windows Vista、Windows 7或Windows Server 2008操作系统。 ● 任何一个C#语言版本的Visual Studio 2008,包括可以免费获得的Visual Web Developer 2008 Express。本书中的图片来自Visual Studio 2008 Professional。 ● 任何一个版本的SQL Server 2008,包括可以免费获得的SQL Server 2008 Express。本书中的项目使用的是SQL Server 2008 Express,但是实际上可以使用各个版本的SQL Server 2008。 ● 任何一个版本的SQL Server Management Studio 2008,包括与SQL Server 2008 Express with Tools版本一同发行的Basic版本,这个版本可以免费获得。本书中的图片来自SQL Server Management Studio 2008。 配套网站 在本书的配套网站中,读者可以找到最新的代码及有关问题的跟踪进展,还可以就本书中的TheBeerHouse应用程序展开讨论。本书配套网站的网址是: 读者可以以访客的身份浏览我们的维基、源代码和各种讨论,也可以参与到TheBeer House社区中与其他成员交流。我们时刻欢迎新成员的到来,也鼓励那些在实际工作中使用TheBeerHouse应用程序的成员与社区中的其他成员分享他们的知识。 除了前面提到的配套网站,本书还提供了TheBeerHouse的演示网站。这个演示网站的网址是: 这个网站与本书所构建的网站是完全一样的,在使用本书提供的代码时,读者可以将这个网站作为参考。 源代码 读者在阅读本书提供的代码时,既可以亲自输入所有代码,也可以使用随书提供的代码文件。本书所有代码均可以从/或www.tupwk.com.cn/downpage网站下载。进入该网站后,读者可以根据本书的书名查找本书(既可以使用搜索框,也可以使用书名列表进行查找),然后单击本书详细内容页面上提供的Download Code链接,就可以下载本书提供的所有代码。 注意: 由于许多书籍名称与本书类似,读者也可以通过ISBN进行查找,本书的ISBN为:978-0-470-41095-0。 另外,读者可以从前面提到的CodePlex网站下载本书或其他Wrox书籍的代码,也可以从Wrox的代码下载页面http://www. Tupwk.com.cn/downpage下载本书或其他Wrox书籍的代码。 源代码下载成功后,读者用任一解压工具将其解压即可。 勘误表 为了避免本书文字和代码中存在错误,我们已经竭尽全力。然而,世界上并不存在完美无缺的事物,所以本书可能仍然存在错误。如果读者在我们编写的某本书籍中发现了诸如拼写错误或代码缺陷等问题,那么请告诉我们,我们对此表示感谢。利用勘误表反馈错误信息,可以为其他读者节省大量时间,同时,我们也能够受益于读者的帮助,这样有助于我们编写出质量更高的专业著作。 如果读者需要参考本书的勘误表,请在网站中用搜索框或书名列表查找本书书名。然后,在本书的详细内容页面上,单击Book Errata链接。在随后显示的页面中,读者可以看到与本书相关的所有勘误信息,这些信息是由读者提交、并由Wrox的编辑们加上的。通过访问/misc-pages/booklist.shtml,读者还可以看到Wrox出版的所有书籍的勘误表。 如果读者没有在Book Errata页面上找到自己发现的错误,那么请转到页面,针对您所发现的每一项错误填写表格,并将表格发给我们,我们将对表格内容进行认真审查,如果确实是我们书中的错误,我们将在该书的Book Errata页面上标明该错误信息,并在该书的后续版本中改正。 关于网站 如果读者希望能够与作者进行讨论,或希望能够参与到读者的共同讨论中,那么请加入论坛。该论坛是一个基于Web的系统,读者可以在论坛发表与Wrox出版的书籍及相关技术的信息,并与其他读者和技术用户进行讨论。论坛提供了订阅功能,可以将与读者所选定主题相关的新帖子定期发送到读者的电子邮箱。Wrox的作者、编辑、业界专家,以及其他读者都会参与论坛中的讨论。 读者可以在参与多个论坛的讨论,这些论坛不仅能够帮助读者更好地理解本书,还有助于读者更好地开发应用程序。如果读者希望加入论坛,那么请按照以下步骤执行: 1. 进入页面,单击Register链接。 2. 阅读使用条款,然后单击Agree。 3. 填写必要的信息及可选信息,然后单击Submit。 4. 随后读者会收到一封电子邮件,邮件中说明了如何验证账户并完成整个加入过程。 读者无须加入P2P论坛即可阅读论坛消息,但如果需要发表主题或发表回复,那么必须加入论坛。 成功加入论坛后,读者就可以发表新主题了。此时,读者还可以回复其他用户发表的主题。读者在任何时间都可以阅读论坛信息,如果需要论坛将新的信息发送到自己的电子邮箱,那么可以单击论坛列表中论坛名称旁的Subscribe to this Forum图标完成这项功能设置。 如果读者需要获得更多与Wrox P2P相关的信息,请阅读P2P FAQs,这样可以获得大量与P2P和Wrox出版的书籍相关的具体信息。阅读FAQs时,请单击P2P 页面上的FAQs链接。