Pro ASP.NET 4 in C# 2010

Similar documents
Beginning ASP.NET. 4.5 in C# Matthew MacDonald

Microsoft ASP.NET Using Visual Basic 2008: Volume 1 Table of Contents

10267A CS: Developing Web Applications Using Microsoft Visual Studio 2010

Introduction... xxvii. Chapter 1: ASP.NET 4.5 Essentials... 1

2310C VB - Developing Web Applications Using Microsoft Visual Studio 2008 Course Number: 2310C Course Length: 5 Days

ASP.NET 2.0 p. 1.NET Framework 2.0 p. 2 ASP.NET 2.0 p. 4 New Features p. 5 Special Folders Make Integration Easier p. 5 Security p.

Audience: Experienced application developers or architects responsible for Web applications in a Microsoft environment.

DOT NET Syllabus (6 Months)

The Processing Directives of a Page p. 91 The Page Class p. 99 Properties of the Page Class p. 100 Methods of the Page Class p.

IN PRACTICE. Daniele Bochicchio Stefano Mostarda Marco De Sanctis. Includes 106 practical techniques MANNING

COPYRIGHTED MATERIAL. Contents. Part I: C# Fundamentals 1. Chapter 1: The.NET Framework 3. Chapter 2: Getting Started with Visual Studio

CHAPTER 1: GETTING STARTED WITH ASP.NET 4 1

DOT NET COURSE BROCHURE

Developing Web Applications Using Microsoft Visual Studio 2008

Course ID: 2310C Course Name: Developing Web Applications Using Microsoft Visual Studio 2008

Apex TG India Pvt. Ltd.

DOT NET SYLLABUS FOR 6 MONTHS

"Charting the Course... MOC A Introduction to Web Development with Microsoft Visual Studio Course Summary

Contents. Using Interpreters... 5 Using Compilers... 5 Program Development Life Cycle... 6

.NET FRAMEWORK. Visual C#.Net

Developing Web Applications Using ASP.NET Duration:56 Hours

10267 Introduction to Web Development with Microsoft Visual Studio 2010

ASP.NET Using C# (VS2013)

10264A CS: Developing Web Applications with Microsoft Visual Studio 2010

DE-2310 Developing Web Applications Using Microsoft Visual Studio 2008 SP1

SECURED PROGRAMMING IN.NET DETAILED TRAINING CONTENT INDUSTRIAL TRAINING PROGRAM ( )

ASP.NET Using C# (VS2017)

ASP.NET Training Course Duration. 30 Working days, daily one and half hours. ASP.NET Training Course Overview

"Charting the Course... SharePoint 2007 Hands-On Labs Course Summary

Pro Business Applications with Silverlight 4

COURSE OUTLINE: OD10267A Introduction to Web Development with Microsoft Visual Studio 2010

Introduction to Controls Introduction

Pro ASP.NET MVC 2 Framework

Developing Web Applications Using Microsoft Visual Studio 2008 SP1

DE Introduction to Web Development with Microsoft Visual Studio 2010

.NET-6Weeks Project Based Training

Introduction to Web Development with Microsoft Visual Studio 2010

Microsoft ASP.NET Whole Course Syllabus upto Developer Module (Including all three module Primary.NET + Advance Course Techniques+ Developer Tricks)

Introduction 13. Feedback Downloading the sample files Problem resolution Typographical Conventions Used In This Book...

ASP.NET Web Forms Programming Using Visual Basic.NET

OVERVIEW ENVIRONMENT PROGRAM STRUCTURE BASIC SYNTAX DATA TYPES TYPE CONVERSION

COPYRIGHTED MATERIAL. Contents. Chapter 1: Introducing Microsoft Expression Web 1. Chapter 2: Building a Web Page 21. Acknowledgments Introduction

ALPHAPRIMETECH 112 New South Road, Hicksville, NY 11801

Microsoft Official Courseware Course Introduction to Web Development with Microsoft Visual Studio

INTRODUCTION TO.NET. Domain of.net D.N.A. Architecture One Tier Two Tier Three Tier N-Tier THE COMMON LANGUAGE RUNTIME (C.L.R.)

CHAPTER 1: INTRODUCING C# 3

Microsoft. Inside Microsoft. SharePoint Ted Pattison. Andrew Connell. Scot Hillier. David Mann

Introduction to Web Development with Microsoft Visual Studio 2010

DEVELOPING WEB AZURE AND WEB SERVICES MICROSOFT WINDOWS AZURE

DEVELOPING WEB APPLICATIONS WITH MICROSOFT VISUAL STUDIO Course: 10264A; Duration: 5 Days; Instructor-led

20486: Developing ASP.NET MVC 4 Web Applications

6 Months Training Module in.net Module 1-Total Days-20

Developing ASP.NET MVC 5 Web Applications. Course Outline

EXAM Web Development Fundamentals. Buy Full Product.

SOFTRONIICS Call:

COURSE 20486B: DEVELOPING ASP.NET MVC 4 WEB APPLICATIONS

Introduction. Part I: Silverlight Fundamentals for ASP.NET Developers 1

20486: Developing ASP.NET MVC 4 Web Applications (5 Days)

Silverlight Recipes. A Problem-Solution Approach. Apress* Jit Ghosh and Rob Cameron

Developing ASP.NET MVC 4 Web Applications

Course 20486B: Developing ASP.NET MVC 4 Web Applications

Developing ASP.NET MVC 4 Web Applications

Developing ASP.NET MVC 5 Web Applications

Visual Studio Course Developing ASP.NET MVC 5 Web Applications

Acknowledgments Introduction. Part I: Programming Access Applications 1. Chapter 1: Overview of Programming for Access 3

Developing ASP.Net MVC 4 Web Application

COWLEY COLLEGE & Area Vocational Technical School

C# Programming: From Problem Analysis to Program Design. Fourth Edition

Course Outline: Course 10267A: Introduction to Web Development with Microsoft Visual Studio 2010 Learning Method: Instructor-led Classroom Learning

Pro ODP.NET for Oracle. Database 11 g. Edmund Zehoo. Apress

CHAPTER 1: VISUAL STUDIO

Q&As. Designing & Developing Web Apps Using MS.NET Frmwk 4. Pass Microsoft Exam with 100% Guarantee

COPYRIGHTED MATERIAL. Contents. Introduction. Chapter 1: Welcome to SQL Server Integration Services 1. Chapter 2: The SSIS Tools 21

"Charting the Course... Java Programming Language. Course Summary

20486 Developing ASP.NET MVC 5 Web Applications

This course is designed for web developers that want to learn HTML5, CSS3, JavaScript and jquery.

Developing ASP.NET MVC Web Applications (486)

Microsoft Exam Questions & Answers

70-487: Developing Windows Azure and Web Services

Chapter 9. Web Applications The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill

--Microsoft-- --Windows Phone--

Building Effective ASP.NET MVC 5.x Web Applications using Visual Studio 2013

M Developing Microsoft ASP.NET Web Applications Using Visual Studio.NET 5 Day Course

ASP.NET MVC Training

20486-Developing ASP.NET MVC 4 Web Applications

CHAPTER 1: INTRODUCTION TO THE IDE 3

Advanced WCF 4.0 .NET. Web Services. Contents for.net Professionals. Learn new and stay updated. Design Patterns, OOPS Principles, WCF, WPF, MVC &LINQ

Certified ASP.NET Programmer VS-1025

Diploma in Microsoft.NET

CHAPTER 1: A QUICK TOUR 3

20486C: Developing ASP.NET MVC 5 Web Applications

Microsoft ASP.NET Using Visual C# 2008: Volume 2 Table of Contents

Developing ASP.NET MVC 4 Web Applications

ASP.NET 3.5 ASP.NET 3.5. in C# Beginning. From Novice to Professional. Updatesofts.com. Matthew MacDonald

Microsoft Developing ASP.NET MVC 4 Web Applications

Chapters and Appendix F are PDF documents posted online at the book s Companion Website (located at

Software Development & Education Center Complete.NET 4.5

CROSS-REFERENCE TABLE ASME A Including A17.1a-1997 Through A17.1d 2000 vs. ASME A

Learn Well Technocraft

PART I: INTRODUCTION TO WINDOWS 8 APPLICATION DEVELOPMENT CHAPTER 1: A BRIEF HISTORY OF WINDOWS APPLICATION DEVELOPMENT 3

Transcription:

Pro ASP.NET 4 in C# 2010 ii n in Matthew MacDonald, Adam Freeman, and Mario Szpuszta Apress

Contents Contents at a Glance - About the Author About the Technical Reviewer Introduction... Hi xxxii xxxiii xxxiv Part 1: Core Concepts 1 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 Complied, 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

CflciptGr 2i VlSUcll StllCtlOi " BBi«iB«BBa«aBaBBBBBBBaaBBBiBBBBBBi«BBBBBaBBB«aaBB»BBBBBBBaaiBBBBBBB21 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

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

The HtmlContainerControl Class 133 The HtmllnputControl 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

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

Using Configuration-Free HTTP Handlers 223 Creating an Advanced HTTP Handier 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 im Chapter 7: ADO.NET Fundamentals...277 The ADO.NET Architecture 278 AD0.NET Data Providers 278

Standardization in ADO.NET 280 Fundamental AD0.NET Classes 281 The Connection Class 283 Connection Strings 283 Testing a Connection 286 Connection Pooling 287 The Command and DataReader Classes 289 Command Basics 290 The DataReader Class 291 The ExecuteReader() Method and the DataReader 292 The ExecuteScalarO Method 298 The ExecuteNonQuery() Method 298 SQL Injection Attacks 299 Using Parameterized Commands 303 Calling Stored Procedures 304 Transactions 307 Transactions and ASP.NET Applications 307 Isolation Levels 312 Savepoints 314 Provider-Agnostic Code 315 Creating the Factory 316 Create Objects with Factory 317 A Query with Provider-Agnostic Code 318 Summary 319 Chapter 8: Data Components and the DataSet 321 Building a Data Access Component 321 The Data Package 323 The Stored Procedures 324 The Data Utility Class... 325 Testing the Database Component 331 Disconnected Data 333 Web Applications and the DataSet 334

XML Integration 335 The DataSet 335 The DataAdapter Class 337 Filling a DataSet 338 Working with Multiple Tables and Relationships 340 Searching for Specific Rows 343 Using the DataSet in a Data Access Class 344 Data Binding 345 The DataView Class 345 Sorting with a DataView 346 Filtering with a DataView 348 Advanced Filtering with Relationships 350 Calculated Columns 350 Summary 352 i Chapter 9: Data Binding 353 Basic Data Binding 354 Single-Value Binding 354 Other Types of Expressions 356 Repeated-Value Binding 360 Data Source Controls 368 The Page Life Cycle with Data Binding 369 The SqIDataSource 370 Selecting Records 371 Parameterized Commands 374 Handling Errors 379 Updating Records 379 Deleting Records 384 Inserting Records 384 Disadvantages of the SqIDataSource 385 The ObjectDataSource 386 Selecting Records 387 xii

, 416 Updating Records 392 Updating with a Data Object 393 The Limits of the Data Source Controls 397 The Problem 398 Adding the Extra Items 399 Handling the Extra Options with the SqIDataSource 399 Handling the Extra Options with the ObjectDataSource 400 Summary 401 Chapter 10: Rich Data Controls... 403 The GridView 404 Defining Columns 404 Formatting the GridView 408 Formatting Fields 409 Styles 410 Formatting-Specific Values 414 GridView Row Selection Using Selection to Create a Master-Details Form 418 The SelectedlndexChanged Event 420 Using a Data Field As a Select Button 421 Sorting the GridView 422 Sorting with the SqIDataSource 422 Sorting with the ObjectDataSource 423 Sorting and Selection 425 Advanced Sorting 425 Paging the GridView 427 Automatic Paging 427 Paging and Selection 429 Custom Pagination with the ObjectDataSource 429 Customizing the Pager Bar 432 GridView Templates 433 Using Multiple Templates 435 xiii

Editing Templates in Visual Studio 436 Binding to a Method 437 Handling Events in a Template 439 Editing with a Template 440 Client IDs in Templates 447 The ListView 447 Grouping 451 Paging 453 The DetailsView and FormView 454 The DetailsView 454 The FormView 457 Advanced Grids 459 Summaries in the GridView 459 A Parent/Child View in a Single Table 461 Editing a Field Using a Lookup Table 464 Serving Images from a Database 466 Detecting Concurrency Conflicts 472 Summary 476 i Chapter 11: Caching and Asynchronous Pages 477 Understanding ASP.NET Caching 477 Output Caching 478 Declarative Output Caching 479 Caching and the Query String 480 Caching with Specific Query String Parameters 481 Custom Caching Control 481 Caching with the HttpCachePolicy Class 483 Post-Cache Substitution and Fragment Caching 484 Cache Profiles 487 Cache Configuration 487 Output Caching Extensibility 488 Data Caching 493 Adding Items to the Cache 494 xiv

A Simple Cache Test 496 Cache Priorities 498 Caching with the Data Source Controls 498 Cache Dependencies 502 File and Cache Item Dependencies 502 Aggregate Dependencies 503 The Item Removed Callback 504 Understanding SQL Cache Notifications 507 How Cache Notifications Work 508 Enabling Notifications 508 Creating the Cache Dependency 509 Custom Cache Dependencies 510 A Basic Custom Cache Dependency 510 A Custom Cache Dependency Using Message Queues 512 Asynchronous Pages 514 Creating an Asynchronous Page 515 Querying Data in an Asynchronous Page 517 Handling Errors 519 Using Caching with Asynchronous Tasks > 522 Multiple Asynchronous Tasks and Timeouts 524 Summary 526 II Chapter 12: Files and Streams 527 Working with the File System 527 The Directory and File Classes 528 The Directorylnfo and Filelnfo Classes 530 The Drivelnfo Class 533 Working with Attributes 534 Filter Files with Wildcards 536 Retrieving File Version Information 537 The Path Class 538 A File Browser 541 xv

Reading and Writing Files with Streams 546 Text Files 547 Binary Files 549 Uploading Files 550 Making Files Safe for Multiple Users 552 Compression 557 Serialization 558 Summary 561 Chapter 13: LINQ 563 LINQ Basics 563 Deferred Execution 565 How LINQ Works 566 LINQ Expressions 567 LINQ Expressions "Under the Hood" 575 LINQ to DataSet 578 Typed DataSets 581 Null Values 581 LINQ to Entities 581 Generating the Data Model 582 The Data Model Classes 583 Entity Relationships 586 Querying Stored Procedures 587 LINQ to Entities Queries "Under the Hood" 589 Database Operations 595 Inserts 595 Updates 598 Deletes 598 Managing Concurrency 598 Handling Concurrency Conflicts 599 The EntityDataSource Control 604 Displaying Data 604 xvi

Getting Related Data 609 Editing Data 610 Validation 611 Using the QueryExtender Control 612 Using a SearchExpression 613 Using a RangeExpression 614 Using a PropertyExpression 614 Using a MethodExpression 615 Summary 616 ChciptGr 14* XIVILib HMHiiiiiiiiiiMiitiiiHUM mi i * 6"!7 «When Does Using XML Make Sense? 617 An Introduction to XML 618 The Advantages of XML 619 Well-Formed XML 620 XML Namespaces 621 XML Schemas 622 Stream-Based XML Processing 624 Writing XML Files 624 Reading XML Files 628 In-Memory XML Processing 631 The XmlDocument 632 The XPathNavigator 636 The XDocument 638 Searching XML Content, 643 Searching with XmlDocument 644 Searching XmlDocument with XPath 646 Searching XDocument with LINQ 649 Validating XML Content 651 A Basic Schema 651 Validating with XmlDocument 652 Validating with XDocument 654 xvii

Transforming XML Content 654 A Basic Stylesheet 655 Using XslCornpiledTransform 656 Using the Xml Control 657 Transforming XML with UNO. to XML 658 XML Data Binding 660 Nonhierarchical Binding 660 Using XPath 662 Nested Grids 665 Hierarchical Binding with the TreeView 667 Using XSLT 669 Binding to XML Content from Other Sources 671 Updating XML Through the XmlDataSource 672 XML and the AD0.NET DataSet 672 Converting the DataSet to XML 673 Accessing a DataSet As XML 675 Summary 678 Part 3: Building ASP.NET Websites 679 Chapter 15: User Controls 681 User Control Basics 681 Creating a Simple User Control 682 Converting a Page to a User Control 684 Adding Code to a User Control 684 Handling Events 684 Adding Properties 685 Using Custom Objects 688 Adding Events 690 Exposing the Inner Web Control 694 Dynamically Loading User Controls 695 Portal Frameworks 695 xviii

; Chapter CONTENTS Partial Page Caching, 699 VaryByControl 699 Sharing Cached Controls 701 Summary 702 16: Themes and Master Pages 703 Cascading Style Sheets 703 Creating a Stylesheet 703 Applying Stylesheet Rules 706 Themes 709 Theme Folders and Skins 709 Applying a Simple Theme 711 Handling Theme Conflicts 712 Creating Multiple Skins for the Same Control, 713 Skins with Templates and Images 714 Using CSS in a Theme 717 Applying Themes Through a Configuration File 717 Applying Themes Dynamically 718 Standardizing Website Layout, 720 Master Page Basics 720 A Simple Master Page 721 A Simple Content Page 723 Default Content 725 Master Pages with Tables and CSS Layout 726 Master Pages and Relative Paths 729 Applying Master Pages Through a Configuration File 730 Advanced Master Pages 730 Interacting with the Master Page Class 730 Dynamically Setting a Master Page 732 Nesting Master Pages 732 Summary 734 XIX

s- CONTENTS ii Chapter 17: Website Navigation.. 735 Pages with Multiple Views 736 The MultiView Control 736 The Wizard Control 741 Site Maps 751 Defining a Site Map 752 Binding to a Site Map 753 Breadcrumbs 754 Showing a Portion of the Site Map 757 The Site Map Objects 760 Adding Custom Site Map Information 762 Creating a Custom SiteMapProvider 763 Security Trimming 770 URL Mapping and Routing 772 URL Mapping 772 URL Routing 773 The TreeView Control 774 The TreeNode 775 Populating Nodes on Demand 778 TreeView Styles 779 The Menu Control 783 Menu Styles 786 Menu Templates 788 Summary 789 Chapter 18: Website Deployment...791 Installing and Configuring IIS 791 Installing IIS 7 791 Managing IIS 7 793 Deploying a Website 795 Deploying by Copying Files 796 Using Web Deployment 801 xx

Using FTP Deployment 809 Managing a Website 817 Creating a New Site 817 Creating Virtual Directories 818 Using the VirtualPathProvider 819 Using Application Pools 823 Using Application Warm-Up 826 Extending the Integrated Pipeline 828 Creating the Handler 828 Deploying the Handler 829 Configuring the Handler 829 Testing the Handler 830 Summary 831 Part 4: Security 833 II Chapter 19: The ASP.NET Security Model 835 What It Means to Create Secure Software 835 Understanding Potential Threats 835 Secure Coding Guidelines 836 Understanding Gatekeepers 837 Understanding the Levels of Security 838 Authentication 838, Authorization 839 Confidentiality and Integrity 840 Pulling It All Together 841 Understanding Secure Sockets Layer 842 Understanding Certificates 843 Understanding SSL 843 Configuring SSL in IIS 7.x 845 Summary 849 xxi

Chapter 20: Forms Authentication 851 Introducing Forms Authentication 851 Why Use Forms Authentication? 852 Why Would You Not Use Forms Authentication? 854 Why Not Implement Cookie Authentication Yourself? 855 The Forms Authentication Classes 856 Implementing Forms Authentication 857 Configuring Forms Authentication 857 Denying Access to Anonymous Users 861 Creating a Custom Login Page 862 Custom Credentials Store 868 Persistent Cookies in Forms Authentication 869 IIS 7.x and Forms Authentication 871 Summary 876 Chapter 21: Membership < 877 Introducing the ASP.NET Membership API 877 Using the Membership API 880 Configuring Forms Authentication 882 Creating the Data Store 883 Configuring Connection String and Membership Provider 890 Creating and Authenticating Users 893 Using the Security Controls 897 The Login Control 898 The LoginStatus Control 909 The LoginView Control 910 The PasswordRecovery Control 911 The ChangePassword Control 916 The CreateUserWizard Control 917 Configuring Membership in IIS 7.x 922 Configuring Providers and Users 922 Using the Membership API with Other Applications 924 xxii

Using the Membership Class 926 Retrieving Users from the Store 927 Updating Users in the Store 929 Creating and Deleting Users 930 Validating Users 931 Summary 931 Chapter 22: Windows Authentication....933 Introducing Windows Authentication 933 Why Use Windows Authentication? 933 Why Would You Not Use Windows Authentication? 935 Mechanisms for Windows Authentication 935 Implementing Windows Authentication 942 Configuring IIS 7.x 942 Configuring ASP.NET 944 Deeper Into the IIS 7.x Pipeline 945 Denying Access to Anonymous Users 948 Accessing Windows User Information 950 Impersonation 956 Impersonation and Delegation in Windows 956 Configured Impersonation 958 Programmatic Impersonation 959 Summary 962 if Chapter 23: Authorization and Roles 963 URL Authorization 963 Authorization Rules 964 File Authorization 970 Authorization Checks in Code 970 Using the lslnrole{) Method 970 Using the PrincipalPermission Class 971 Using the Roles API for Role-Based Authorization 974 Using the LoginView Control with Roles 981 xxiii

Accessing Roles Programmatically 981 Using the Roles API with Windows Authentication 984 Authorization and Roles in IIS 7.x 986 Authorization with ASP.NET Roles in IIS 7.x 989 Managing ASP.NET Roles with IIS 7.x 991 Summary 993 Chapter 24: Profiles 995 Understanding Profiles 995 Profile Performance 996 How Profiles Store Data 997 Profiles and Authentication 998 Profiles vs. Custom Data Components 998 Using the SqIProfileProvider 998 Creating the Profile Tables 999 Configuring the Provider 1002 Defining Profile Properties 1003 Using Profile Properties 1004 Profile Serialization 1006 Profile Groups 1008 Profiles and Custom Data Types 1008 The Profiles API 1012 Anonymous Profiles 1015 Custom Profile Providers 1017 The Custom Profile Provider Glasses 1018 Designing the FactoredProfileProvider 1020 Coding the FactoredProfileProvider 1021 Testing the FactoredProfileProvider 1025 Summary 1028 Chapter 25: Cryptography 1029 Encrypting Data: Confidentiality Matters 1029 The.NET Cryptography Namespace 1030 xxiv

Understanding the.net Cryptography Classes 1033 Symmetric Encryption Algorithms 1035 Asymmetric Encryption 1036 The Abstract Encryption Classes 1037 The ICryptoTransform Interface 1037 The CryptoStream Class 1038 Encrypting Sensitive Data 1039 Managing Secrets 1039 Using Symmetric Algorithms 1041 Using Asymmetric Algorithms 1047 Encrypting Sensitive Data in a Database 1049 Encrypting the Query String 1054 Wrapping the Query String 1054 Creating a Test Page 1057 Summary 1059 I Chapter 26: Custom Membership Providers...1061 Architecture of Custom Providers 1061 Basic Steps for Creating Custom Providers 1063 Overall Design of the Custom Provider 1063 Designing and Implementing the Custom Store 1065 Implementing the Provider Classes 1072 Using the Custom Provider Classes 1092 Summary 1097 Part 5: Advanced User interface..1099 Chapter 27: Custom Server Controls 1101 Custom Server Control Basics 1101 Creating a Bare-Bones Custom Control 1102 Using a Custom Control 1104 Custom Controls in the Toolbox 1105 Creating a Web Control That Supports Style Properties 1108 XXV

«CONTENTS The Rendering Process 1111 Dealing with Different Browsers 1113 The HtmlTextWriter 1113 Browser Detection 1114 Browser Properties 1115 Overriding Browser Type Detection 1117 Adaptive Rendering 1117 Control State and Events 1119 View State 1119 Control State 1121 Postback Data and Change Events 1123 Triggering a Postback 1125 Extending Existing Web Controls 1127 Composite Controls 1127 Derived Controls 1130 Summary 1133 Chapter 28: Graphics, GDI+, and Charting 1135 The ImageMap Control 1135 Creating Hotspots 1136 Handling Hotspot Clicks 1137 A Custom Hotspot 1139 Drawing with GDI+ 1141 Simple Drawing 1141 Image Format and Quality 1143 The Graphics Class 1145 Using a GraphicsPath 1148 Pens 1149 Brushes 1152 Embedding Dynamic Graphics in a Web Page 1154 Using the PNG Format 1155 Passing Information to Dynamic Images 1155 Custom Controls That Use GDI+ 1158 xxvi

Using the Chart Control 1163 Creating a Basic Chart 1163 Populating a Chart with Data 1170 Summary 1178 Chapter 29: JavaScript and Ajax Techniques. 1179 JavaScript Essentials 1179 The HTML Document Object Model 1180 Client-Side Events 1181 Script Blocks 1184 Manipulating HTML Elements 1185 Debugging JavaScript 1186 Basic JavaScript Examples 1189 Creating a JavaScript Page Processor 1190 Using JavaScript to Download Images Asynchronously 1193 Rendering Script Blocks 1198 Script Injection Attacks 1199 Request Validation 1200 Disabling Request Validation 1201 Extending Request Validation 1203 Custom Controls with JavaScript 1205 Pop-Up Windows 1205 Rollover Buttons 1210 Frames 1213 Frame Navigation 1214 Inline Frames 1216 Understanding Ajax 1217 The XMLHttpRequest Object 1218 An Ajax Example 1220 Using Ajax with Client Callbacks 1224 Creating a Client Callback 1225 Client Callbacks "Under the Hood" 1231 xxvii

Client Callbacks in Custom Controls 1232 Summary 1237 Chapter 30: ASP.NET AJAX..1239 Introducing ASP.NET AJAX 1239 ASP.NET AJAX on the Client: The Script Libraries 1240 ASP.NET AJAX on the Server: The ScriptManager 1241 Server Callbacks 1242 Web Services in ASP.NET AJAX 1243 Placing a Web Method in a Page 1250 ASP.NET AJAX Application Services 1252 ASP.NET AJAX Server Controls 1259 Partial Rendering with the UpdatePanel 1260 Timed Refreshes with the Timer 1268 Time-Consuming Updates with Update Progress 1269 Managing Browser History 1272 Deeper into the Client Libraries 1276 Understanding the Client Model 1276 Object-Oriented Programming in JavaScript 1277 The Web-Page Framework 1286 Control Extenders 1291 Installing the ASP.NET AJAX Control Toolkit 1292 The AutoCompleteExtender 1294 The ASP.NET AJAX Control Toolkit 1297 Summary 1302 Chapter 31: Portals with Web Part Pages 1303 Typical Portal Pages 1304 Basic Web Part Pages 1305 Creating the Page Design 1306 WebPartManager and WebPartZone Controls 1307 Adding Web Parts to the Page 1309 Customizing the Page 1313 xxviii

Creating Web Parts 1316 Simple Web Part Tasks 1316 Developing Advanced Web Parts... 1325 Web Part Editors 1335 Connecting Web Parts 1341 Custom Verbs and Web Parts 1350 User Controls and Advanced Web Parts 1351 Uploading Web Parts Dynamically 1354 Authorizing Web Parts 1360 Final Tasks for Personalization 1360 Summary 1361 Chapter 32: MVC 1363 Choosing Between MVC and Web Forms 1363 Creating a Basic MVC Application, 1364 Creating the Model 1365 Creating the Controller 1365 Creating the Index View 1366 Testing the (Incomplete) Application 1367 Completing the Controller and Views 1368 Modifying the Site.Master File 1371 Extending the Basic MVC Application 1371 Configuring Routing 1371 Adding Error Handling 1373 Adding Authentication 1374 Consolidating Data Store Access 1375 Adding Support for Foreign Key Constraints 1378 Customizing Views 1378 Modifying the View 1379 Adding View Data 1381 Adding to the Model 1383 xxix

Validating Data 1388 Performing Basic Validation 1388 Adding Validation Annotations 1390 Using Action Results 1393 Returning JSON Data 1394 Calling Another Controller Method 1395 Summary 1396 if Chapter 33: Dynamic Data.. 1397 Creating a Dynamic Data Application 1397 Creating the Dynamic Data Site 1397 Exploring the Dynamic Data Site 1400 Understanding the Anatomy of a Dynamic Data Project 1403 Customizing a Dynamic Data Site 1404 Customizing with Templates 1404 Customizing with Routes 1414 Customizing with Metadata 1423 Customizing Validation 1430 Summary 1435 Chapter 34: Silverlight 1437 Understanding Silverlight 1438 Silverlight vs. Flash 1439 Silverlight System Requirements 1441 Creating a Silverlight Solution 1442 Silverlight Compilation 1443 The Entry Page 1445 Creating a Silverlight Project 1449 Designing a Silverlight Page 1450 Understanding XAML 1454 Setting Properties 1455 The XAML Code-Behind 1456 Handling Events 1457 XXX

Browsing the Silverlight Class Libraries 1459 Layout 1460 The Canvas 1460 The Grid 1466 Animation 1471 Animation Basics 1471 Defining an Animation 1472 The Storyboard Class 1472 An Interactive Animation Example 1475 Transforms 1479 Using Web Services with Silverlight 1483 Creating the Web Service 1484 Adding a Web Reference...1484 Calling the Web Service 1485 Configuring the Web Service URL 1487 Cross-Domain Web Service Calls 1488 Summary 1489 Index 1491 xxxi