Pro ASP.NET 4 in C# 2010 Fourth Edition ■ ■ ■ Matthew MacDonald, Adam Freeman, and Mario Szpuszta Pro ASP.NET in C# 2010, Fourth Edition Copyright © 2010 by Matthew MacDonald, Adam Freeman, 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 the publisher. ISBN-13 (pbk): 978-1-4302-2529-4 ISBN-13 (electronic): 978-1-4302-2530-0 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. President and Publisher: Paul Manning Lead Editor: Ewan Buckingham Technical Reviewers: Fabio Claudio Ferracchiati and Todd Meister Editorial Board: Clay Andres, Steve Anglin, Mark Beckner, Ewan Buckingham, Gary Cornell, Jonathan Gennick, Jonathan Hassell, Michelle Lowman, Matthew Moodie, Duncan Parkes, Jeffrey Pepper, Frank Pohlmann, Douglas Pundick, Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom Welsh Coordinating Editor: Anne Collett Copy Editors: Ralph Moore, Katie Stence, Kim Wimpsett Compositor: Mary Sudul Indexer: Kevin Broccoli Artist: April Milne Cover Designer: Anna Ishchenko Distributed to the book trade worldwide by Springer Science+Business Media, LLC., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders- [email protected], or visit www.springeronline.com. For information on translations, please e-mail [email protected], or visit www.apress.com. Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Special Bulk Sales–eBook Licensing web page at www.apress.com/info/bulksales. 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 www.apress.com. You will need to answer questions pertaining to this book in order to successfully download the code. Contents at a Glance Contents....................................................................................................................v About the Author................................................................................................xxxii About the Technical Reviewer...........................................................................xxxiii Introduction.......................................................................................................xxxiv Part 1: Core Concepts...............................................................................................1 ■ Chapter 1: Introducing ASP.NET...........................................................................3 ■ Chapter 2: Visual Studio.....................................................................................21 ■ Chapter 3: Web Forms........................................................................................77 ■ Chapter 4: Server Controls...............................................................................129 ■ Chapter 5: ASP.NET Applications.....................................................................183 ■ Chapter 6: State Management.........................................................................235 Part 2: Data Access..............................................................................................275 ■ Chapter 7: ADO.NET Fundamentals..................................................................277 ■ Chapter 8: Data Components and the DataSet.................................................321 ■ Chapter 9: Data Binding...................................................................................353 ■ Chapter 10: Rich Data Controls........................................................................403 ■ Chapter 11: Caching and Asynchronous Pages...............................................477 ■ Chapter 12: Files and Streams.........................................................................527 ■ Chapter 13: LINQ..............................................................................................563 ■ Chapter 14: XML...............................................................................................617 iii Part 3: Building ASP.NET Websites.......................................................................679 ■ Chapter 15: User Controls................................................................................681 ■ Chapter 16: Themes and Master Pages...........................................................703 ■ Chapter 17: Website Navigation.......................................................................735 ■ Chapter 18: Website Deployment.....................................................................791 Part 4: Security.....................................................................................................833 ■ Chapter 19: The ASP.NET Security Model........................................................835 ■ Chapter 20: Forms Authentication...................................................................851 ■ Chapter 21: Membership..................................................................................877 ■ Chapter 22: Windows Authentication...............................................................933 ■ Chapter 23: Authorization and Roles...............................................................963 ■ Chapter 24: Profiles.........................................................................................995 ■ Chapter 25: Cryptography..............................................................................1029 ■ Chapter 26: Custom Membership Providers..................................................1061 Part 5: Advanced User Interface.........................................................................1099 ■ Chapter 27: Custom Server Controls..............................................................1101 ■ Chapter 28: Graphics, GDI+, and Charting.....................................................1135 ■ Chapter 29: JavaScript and Ajax Techniques................................................1179 ■ Chapter 30: ASP.NET AJAX.............................................................................1239 ■ Chapter 31: Portals with Web Part Pages......................................................1303 ■ Chapter 32: MVC............................................................................................1363 ■ Chapter 33: Dynamic Data.............................................................................1397 ■ Chapter 34: Silverlight...................................................................................1437 Index...................................................................................................................1491 iv ■ CONTENTS Contents Contents at a Glance................................................................................................iii About the Author................................................................................................xxxii About the Technical Reviewer...........................................................................xxxiii Introduction.......................................................................................................xxxiv Part 1: Core Concepts...............................................................................................1 ■ Chapter 1: Introducing ASP.NET...........................................................................3 The Seven Pillars of ASP.NET..........................................................................................3 #1: ASP.NET Is Integrated with the .NET Framework.............................................................................3 #2: ASP.NET Is Compiled, Not Interpreted..............................................................................................4 #3: ASP.NET Is Multilanguage................................................................................................................6 #4: ASP.NET Is Hosted by the Common Language Runtime...................................................................8 #5: ASP.NET Is Object-Oriented..............................................................................................................9 #6: ASP.NET Supports all Browsers......................................................................................................11 #7: ASP.NET Is Easy to Deploy and Configure......................................................................................11 The Evolution of ASP.NET..............................................................................................12 ASP.NET 1.0 and 1.1.............................................................................................................................12 ASP.NET 2.0..........................................................................................................................................12 ASP.NET 3.5..........................................................................................................................................13 ASP.NET 4.............................................................................................................................................16 Silverlight.............................................................................................................................................18 Summary.......................................................................................................................19 v ■ CONTENTS ■ Chapter 2: Visual Studio.....................................................................................21 Introducing Visual Studio...............................................................................................21 Websites and Web Projects..................................................................................................................22 Creating a Projectless Website.............................................................................................................23 Designing a Web Page..........................................................................................................................28 The Visual Studio IDE.....................................................................................................35 Solution Explorer..................................................................................................................................37 Document Window...............................................................................................................................38 Toolbox.................................................................................................................................................38 Error List and Task List.........................................................................................................................39 Server Explorer.....................................................................................................................................41 The Code Editor.............................................................................................................42 Adding Assembly References...............................................................................................................43 IntelliSense and Outlining.....................................................................................................................46 Visual Studio 2010 Improvements........................................................................................................50 The Code Model.............................................................................................................56 How Code-Behind Files Are Connected to Pages.................................................................................59 How Control Tags Are Connected to Page Variables............................................................................60 How Events Are Connected to Event Handlers.....................................................................................61 Web Projects..................................................................................................................63 Creating a Web Project.........................................................................................................................64 Migrating a Website from a Previous Version of Visual Studio.............................................................66 Visual Studio Debugging................................................................................................68 Single-Step Debugging.........................................................................................................................69 Variable Watches..................................................................................................................................72 Advanced Breakpoints..........................................................................................................................74 The Web Development Helper.......................................................................................74 Summary.......................................................................................................................76 ■ Chapter 3: Web Forms........................................................................................77 Page Processing............................................................................................................78 HTML Forms.........................................................................................................................................78 vi ■ CONTENTS Dynamic User Interface........................................................................................................................80 The ASP.NET Event Model....................................................................................................................81 Automatic Postbacks............................................................................................................................82 View State............................................................................................................................................84 XHTML Compliance...............................................................................................................................88 Client-Side Control IDs.........................................................................................................................94 Web Forms Processing Stages......................................................................................97 Page Framework Initialization..............................................................................................................98 User Code Initialization.........................................................................................................................99 Validation..............................................................................................................................................99 Event Handling....................................................................................................................................100 Automatic Data Binding......................................................................................................................100 Cleanup...............................................................................................................................................101 A Page Flow Example.........................................................................................................................101 The Page As a Control Container.................................................................................104 Showing the Control Tree...................................................................................................................104 The Page Header................................................................................................................................109 Dynamic Control Creation...................................................................................................................110 The Page Class............................................................................................................112 Session, Application, and Cache........................................................................................................112 Request..............................................................................................................................................113 Response............................................................................................................................................114 Server.................................................................................................................................................118 User....................................................................................................................................................121 Trace...................................................................................................................................................121 Accessing the HTTP Context in Another Class....................................................................................127 Summary.....................................................................................................................128 ■ Chapter 4: Server Controls...............................................................................129 Types of Server Controls..............................................................................................129 The Server Control Hierarchy.............................................................................................................130 HTML Server Controls..................................................................................................132 The HtmlControl Class........................................................................................................................133 vii ■ CONTENTS The HtmlContainerControl Class.........................................................................................................133 The HtmlInputControl Class................................................................................................................134 The HTML Server Control Classes......................................................................................................134 Setting Style Attributes and Other Properties.....................................................................................136 Programmatically Creating Server Controls.......................................................................................137 Handling Server-Side Events..............................................................................................................139 Web Controls...............................................................................................................142 The WebControl Base Class................................................................................................................143 Basic Web Control Classes.................................................................................................................145 Units...................................................................................................................................................147 Enumerations.....................................................................................................................................147 Colors.................................................................................................................................................148 Fonts...................................................................................................................................................148 Focus..................................................................................................................................................150 The Default Button..............................................................................................................................151 Scrollable Panels................................................................................................................................152 Handling Web Control Events.............................................................................................................153 The List Controls..........................................................................................................156 The Selectable List Controls...............................................................................................................157 The BulletedList Control.....................................................................................................................161 Input Validation Controls..............................................................................................162 The Validation Controls.......................................................................................................................163 The Validation Process.......................................................................................................................164 The BaseValidator Class.....................................................................................................................165 The RequiredFieldValidator Control....................................................................................................167 The RangeValidator Control................................................................................................................167 The CompareValidator Control............................................................................................................168 The RegularExpressionValidator Control............................................................................................168 The CustomValidator Control..............................................................................................................171 The ValidationSummary Control.........................................................................................................172 Using the Validators Programmatically..............................................................................................174 Validation Groups................................................................................................................................175 viii ■ CONTENTS Rich Controls................................................................................................................177 The AdRotator Control........................................................................................................................178 The Calendar Control..........................................................................................................................180 Summary.....................................................................................................................182 ■ Chapter 5: ASP.NET Applications.....................................................................183 Anatomy of an ASP.NET Application............................................................................183 The Application Domain......................................................................................................................184 Application Lifetime............................................................................................................................185 Application Updates............................................................................................................................186 Application Directory Structure..........................................................................................................186 The global.asax Application File..................................................................................187 Application Events..............................................................................................................................189 Demonstrating Application Events......................................................................................................191 ASP.NET Configuration................................................................................................192 The machine.config File.....................................................................................................................193 The web.config File............................................................................................................................195 <system.web>...................................................................................................................................199 <system.webServer>.........................................................................................................................200 <appSettings>...................................................................................................................................201 <connectionStrings>..........................................................................................................................202 Reading and Writing Configuration Sections Programmatically.........................................................203 The Website Administration Tool (WAT).............................................................................................206 Extending the Configuration File Structure.........................................................................................207 Encrypting Configuration Sections.....................................................................................................211 .NET Components........................................................................................................213 Creating a Component........................................................................................................................214 Using a Component Through the App_Code Directory.......................................................................215 Using a Component Through the Bin Directory..................................................................................216 Extending the HTTP Pipeline........................................................................................219 HTTP Handlers....................................................................................................................................219 Creating a Custom HTTP Handler.......................................................................................................221 Configuring a Custom HTTP Handler..................................................................................................222 ix ■ CONTENTS Using Configuration-Free HTTP Handlers...........................................................................................223 Creating an Advanced HTTP Handler..................................................................................................223 Creating an HTTP Handler for Non-HTML Content..............................................................................226 HTTP Modules.....................................................................................................................................229 Creating a Custom HTTP Module........................................................................................................231 Summary.....................................................................................................................234 ■ Chapter 6: State Management.........................................................................235 ASP.NET State Management........................................................................................236 View State....................................................................................................................238 A View State Example.........................................................................................................................239 Storing Objects in View State.............................................................................................................241 Assessing View State.........................................................................................................................243 Selectively Disabling View State........................................................................................................244 View State Security............................................................................................................................246 Transferring Information Between Pages....................................................................247 The Query String.................................................................................................................................248 Cross-Page Posting............................................................................................................................249 Cookies........................................................................................................................256 Session State...............................................................................................................258 Session Architecture..........................................................................................................................258 Using Session State............................................................................................................................259 Configuring Session State..................................................................................................................261 Securing Session State......................................................................................................................268 Application State..........................................................................................................269 Static Application Variables................................................................................................................271 Summary.....................................................................................................................273 Part 2: Data Access..............................................................................................275 ■ Chapter 7: ADO.NET Fundamentals..................................................................277 The ADO.NET Architecture...........................................................................................278 ADO.NET Data Providers.....................................................................................................................278 x