ebook img

Pro ASP.NET 3.5 in C# 2008 PDF

1509 Pages·2007·42.278 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Pro ASP.NET 3.5 in C# 2008

MacDonald893-8.book Page i Friday, October 19, 2007 6:05 PM Pro ASP.NET 3.5 in C# 2008 Second Edition ■ ■ ■ Matthew MacDonald and Mario Szpuszta MacDonald893-8.book Page ii Friday, October 19, 2007 6:05 PM Pro ASP.NET 3.5 in C# 2008, Second Edition Copyright © 2007 by Matthew MacDonald and Mario Szpuszta All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN-13 (pbk): 978-1-59059-893-1 ISBN-10 (pbk): 1-59059-893-8 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editor: Jonathan Hassell Technical Reviewer: Andy Olsen Editorial Board: Steve Anglin, Ewan Buckingham, Tony Campbell, Gary Cornell, Jonathan Gennick, Jason Gilmore, Kevin Goff, Jonathan Hassell, Matthew Moodie, Joseph Ottinger, Jeffrey Pepper, Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom Welsh Project Manager: Denise S. Lincoln Copy Editors: Ami Knox, Damon Larson, Susannah Pfalzer Associate Production Director: Kari Brooks-Copony Production Editor: Katie Stence Compositor: Pat Christenson Proofreaders: Lisa Hamilton and Linda Seifert Indexer: Broccoli Information Management Artist: April Milne Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail [email protected], or visit http://www.springeronline.com. For information on translations, please contact Apress directly at 2855 Telegraph Avenue, Suite 600, Berkeley, CA 94705. Phone 510-549-5930, fax 510-549-5939, e-mail [email protected], or visit http:// www.apress.com. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at http://www.apress.com. MacDonald893-8.book Page iv Friday, October 19, 2007 6:05 PM Contents at a Glance About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxix About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii PART 1 Core Concepts ■ ■ ■ ■ CHAPTER 1 Introducing ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ■ CHAPTER 2 Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 ■ CHAPTER 3 Web Forms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 ■ CHAPTER 4 Server Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 ■ CHAPTER 5 ASP.NET Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 ■ CHAPTER 6 State Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 PART 2 Data Access ■ ■ ■ ■ CHAPTER 7 ADO.NET Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 ■ CHAPTER 8 Data Components and the DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 ■ CHAPTER 9 Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 ■ CHAPTER 10 Rich Data Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 ■ CHAPTER 11 Caching and Asynchronous Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 ■ CHAPTER 12 Files and Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 ■ CHAPTER 13 LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 ■ CHAPTER 14 XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 PART 3 Building ASP.NET Websites ■ ■ ■ ■ CHAPTER 15 User Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645 ■ CHAPTER 16 Themes and Master Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 ■ CHAPTER 17 Website Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695 ■ CHAPTER 18 Website Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 iv MacDonald893-8.book Page v Friday, October 19, 2007 6:05 PM PART 4 Security ■ ■ ■ ■ CHAPTER 19 The ASP.NET Security Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827 ■ CHAPTER 20 Forms Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859 ■ CHAPTER 21 Membership. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885 ■ CHAPTER 22 Windows Authentication. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939 ■ CHAPTER 23 Authorization and Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975 ■ CHAPTER 24 Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009 ■ CHAPTER 25 Cryptography. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041 ■ CHAPTER 26 Custom Membership Providers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1071 PART 5 Advanced User Interface ■ ■ ■ ■ CHAPTER 27 Custom Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1109 ■ CHAPTER 28 Design-Time Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151 ■ CHAPTER 29 Dynamic Graphics and GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1183 ■ CHAPTER 30 Portals with Web Part Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215 PART 6 Client-Side Programming ■ ■ ■ ■ CHAPTER 31 JavaScript and Ajax Techniques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1273 ■ CHAPTER 32 ASP.NET AJAX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1323 ■ CHAPTER 33 Silverlight. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1379 ■ INDEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1441 v MacDonald893-8.book Page vii Friday, October 19, 2007 6:05 PM Contents About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxix About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxiii PART 1 Core Concepts ■ ■ ■ ■ CHAPTER 1 Introducing ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 The Evolution of Web Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 The Early Web Development World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 What’s Wrong with Classic ASP? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Seven Important Facts About ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Fact 1: ASP.NET Is Integrated with the .NET Framework. . . . . . . . . . . . . . . .7 Fact 2: ASP.NET Is Compiled, Not Interpreted. . . . . . . . . . . . . . . . . . . . . . . . .7 Fact 3: ASP.NET Is Multilanguage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9 Fact 4: ASP.NET Is Hosted by the Common Language Runtime. . . . . . . . .11 Fact 5: ASP.NET Is Object-Oriented . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Fact 6: ASP.NET Is Multidevice and Multibrowser . . . . . . . . . . . . . . . . . . . .14 Fact 7: ASP.NET Is Easy to Deploy and Configure . . . . . . . . . . . . . . . . . . . .15 ASP.NET 3.5: The Story Continues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 ASP.NET 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 ASP.NET 3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Silverlight . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 ■ CHAPTER 2 Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 The .NET Development Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 The Compiler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24 The Visual Studio IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 Websites and Web Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 Creating a Projectless Website. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 Multitargeting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 Designing a Web Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 vii MacDonald893-8.book Page viii Friday, October 19, 2007 6:05 PM viii ■ CONTENTS The Visual Studio IDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 Solution Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 Document Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Error List and Task List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40 Server Explorer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 The Code Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 Adding Assembly References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 IntelliSense and Outlining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46 The Code Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48 How Code-Behind Files Are Connected to Pages . . . . . . . . . . . . . . . . . . . . .51 How Control Tags Are Connected to Page Variables . . . . . . . . . . . . . . . . . .52 How Events Are Connected to Event Handlers . . . . . . . . . . . . . . . . . . . . . . .53 Web Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 Creating a Web Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56 Migrating a Website from a Previous Version of Visual Studio . . . . . . . . . .58 Visual Studio Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59 Single-Step Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Variable Watches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 Advanced Breakpoints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 Visual Studio Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65 The Web Development Helper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69 ■ CHAPTER 3 Web Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71 Page Processing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71 HTML Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 Dynamic User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73 The ASP.NET Event Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 Automatic Postbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75 View State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 XHTML Compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82 Web Forms Processing Stages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 Page Framework Initialization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87 User Code Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88 Validation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .88 Event Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89 Automatic Data Binding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89 Cleanup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 A Page Flow Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 The Page As a Control Container . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92 Showing the Control Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93 The Page Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .97 Dynamic Control Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98 MacDonald893-8.book Page ix Friday, October 19, 2007 6:05 PM ■ CONTENTS ix The Page Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99 Session, Application, and Cache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 Request. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100 Response. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104 User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107 Trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107 Accessing the HTTP Context in Another Class . . . . . . . . . . . . . . . . . . . . . .113 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .114 ■ CHAPTER 4 Server Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 Types of Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 The Server Control Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116 HTML Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118 The HtmlControl Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 The HtmlContainerControl Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 The HtmlInputControl Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 The HTML Server Control Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120 Setting Style Attributes and Other Properties . . . . . . . . . . . . . . . . . . . . . . .122 Programmatically Creating Server Controls. . . . . . . . . . . . . . . . . . . . . . . . .123 Handling Server-Side Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125 Web Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127 The WebControl Base Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129 Basic Web Control Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130 Units. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132 Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132 Colors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133 Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133 Focus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135 The Default Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136 Scrollable Panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 Handling Web Control Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137 The List Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140 The Selectable List Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142 The BulletedList Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144 Input Validation Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 The Validation Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146 The Validation Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147 The BaseValidator Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148 The RequiredFieldValidator Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150 The RangeValidator Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150 The CompareValidator Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 The RegularExpressionValidator Control . . . . . . . . . . . . . . . . . . . . . . . . . . .151 MacDonald893-8.book Page x Friday, October 19, 2007 6:05 PM x ■ CONTENTS The CustomValidator Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154 The ValidationSummary Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156 Using the Validators Programmatically . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 Validation Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158 Rich Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 The AdRotator Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161 The Calendar Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165 ■ CHAPTER 5 ASP.NET Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167 Anatomy of an ASP.NET Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167 The Application Domain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 Application Lifetime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169 Application Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169 Application Directory Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170 The global.asax Application File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171 Application Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .173 Demonstrating Application Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 ASP.NET Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 The machine.config File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .176 The web.config File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179 <system.web> Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183 Reading and Writing Configuration Sections Programmatically . . . . . . . .187 The Website Administration Tool (WAT). . . . . . . . . . . . . . . . . . . . . . . . . . . .190 Extending the Configuration File Structure . . . . . . . . . . . . . . . . . . . . . . . . .192 Encrypting Configuration Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196 .NET Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 Creating a Component. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199 Using a Component Through the App_Code Directory. . . . . . . . . . . . . . . .200 Using a Component Through the Bin Directory. . . . . . . . . . . . . . . . . . . . . .201 Extending the HTTP Pipeline. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203 HTTP Handlers and HTTP Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 Creating a Custom HTTP Handler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 Configuring a Custom HTTP Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207 Registering HTTP Handlers Without Configuring IIS . . . . . . . . . . . . . . . . . .208 Creating an Advanced HTTP Handler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210 Creating an HTTP Handler for Non-HTML Content . . . . . . . . . . . . . . . . . . .212 Creating a Custom HTTP Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218 MacDonald893-8.book Page xi Friday, October 19, 2007 6:05 PM ■ CONTENTS xi ■ CHAPTER 6 State Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219 ASP.NET State Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219 View State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .222 A View State Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223 Storing Objects in View State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224 Retaining Member Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227 Assessing View State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228 View State Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 Transferring Information Between Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231 The Query String. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231 Cross-Page Posting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233 Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .240 Session State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241 Session Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .241 Using Session State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243 Configuring Session State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244 Securing Session State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .250 Application State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251 Static Application Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .255 PART 2 Data Access ■ ■ ■ ■ CHAPTER 7 ADO.NET Fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .259 The ADO.NET Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260 ADO.NET Data Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .260 Standardization in ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .262 SQL Server 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263 Fundamental ADO.NET Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .263 The Connection Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265 Connection Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265 Testing a Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266 Connection Pooling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .268 Connection Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270 The Command and DataReader Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .270 Command Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271 The DataReader Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272 The ExecuteReader() Method and the DataReader. . . . . . . . . . . . . . . . . . .273 The ExecuteScalar() Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .278 MacDonald893-8.book Page xii Friday, October 19, 2007 6:05 PM xii ■ CONTENTS The ExecuteNonQuery() Method. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279 SQL Injection Attacks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279 Using Parameterized Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282 Calling Stored Procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284 Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .286 Transactions and ASP.NET Applications . . . . . . . . . . . . . . . . . . . . . . . . . . .287 Isolation Levels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .291 Savepoints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .293 Provider-Agnostic Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294 Creating the Factory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .294 Create Objects with Factory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .295 A Query with Provider-Agnostic Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . .296 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .297 ■ CHAPTER 8 Data Components and the DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . .299 Building a Data Access Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299 The Data Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .300 The Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .302 The Data Utility Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303 Testing the Database Component. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309 Disconnected Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311 Web Applications and the DataSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .312 XML Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313 The DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313 The DataAdapter Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .315 Filling a DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316 Working with Multiple Tables and Relationships . . . . . . . . . . . . . . . . . . . .317 Searching for Specific Rows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321 Using the DataSet in a Data Access Class. . . . . . . . . . . . . . . . . . . . . . . . . .322 Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .323 The DataView Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .323 Sorting with a DataView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324 Filtering with a DataView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .325 Advanced Filtering with Relationships. . . . . . . . . . . . . . . . . . . . . . . . . . . . .327 Calculated Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328 Typed DataSets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330 Custom TableAdapters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331 Creating a Typed DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332 Dissecting the Typed DataSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .334 Using the Typed DataSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .339

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.