Tài liệu Beginning ASP.NET 2.0 in VB 2005 From Novice to Professional - Pdf 99


Matthew MacDonald
Beginning ASP.NET 2.0
in VB 2005
From Novice to Professional
6218ch00FM.qxd 3/24/06 5:21 PM Page i
Beginning ASP.NET 2.0 in VB 2005: From Novice to Professional
Copyright © 2006 by Matthew MacDonald
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-621-0
ISBN-10 (pbk): 1-59059-621-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: Ewan Buckingham
Technical Reviewer: Andy Olsen
Editorial Board: Steve Anglin, Ewan Buckingham, Gary Cornell, Jason Gilmore, Jonathan Gennick,
Jonathan Hassell, James Huddleston, Chris Mills, Matthew Moodie, Dominic Shakeshaft, Jim Sumser,
Keir Thomas, Matt Wade
Project Manager | Production Director: Grace Wong
Copy Edit Manager: Nicole LeClerc
Copy Editors: Jennifer Whipple, Kim Wimpsett
Assistant Production Director: Kari Brooks-Copony
Production Editor: Kelly Winquist
Compositor and Artist: Kinetic Publishing Services, LLC
Proofreaders: Lori Bring, Elizabeth Berry
Indexer: Michael Brinkman
Cover Designer: Kurt Krames

■CHAPTER 5 Web Form Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
■CHAPTER 6 Web Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
■CHAPTER 7 Tracing, Logging, and Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . 209
■CHAPTER 8 Validation and Rich Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
■CHAPTER 9 State Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
■CHAPTER 10 Master Pages and Themes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
■CHAPTER 11 Website Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
■CHAPTER 12 Deploying ASP.NET Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
PART 3
■ ■ ■
Working with Data
■CHAPTER 13 ADO.NET Fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
■CHAPTER 14 Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
■CHAPTER 15 The Data Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
■CHAPTER 16 Files and Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
■CHAPTER 17 XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
v
6218ch00FM.qxd 3/24/06 5:21 PM Page v
PART 4
■ ■ ■
Website Security
■CHAPTER 18 Security Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
■CHAPTER 19 Membership. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
■CHAPTER 20 Profiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
PART 5
■ ■ ■
Web Services
■CHAPTER 21 Web Services Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785
■CHAPTER 22 Creating Web Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797
■CHAPTER 23 Enhancing Web Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835

.NET 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
ASP.NET 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Visual Studio 2005. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
■CHAPTER 2 Learning the VB 2005 Language . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
The .NET Languages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
The Evolution of Visual Basic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
vii
6218ch00FM.qxd 3/24/06 5:21 PM Page vii
Variables and Data Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Assignment and Initializers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Enumerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Variable Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Advanced Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Type Conversions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Object-Based Manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
The String Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
The DateTime and TimeSpan Types . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
The Array Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Conditional Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
The If End If Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
The Select Case Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Loop Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
The For Next Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
The For Each Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
The Do Loop Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Method Overloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
■CHAPTER 4 Introducing Visual Studio 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
The Promise of Visual Studio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Creating a Website . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
The Solution Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Designing a Web Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Adding Web Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
The Properties Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Adding Ordinary HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
HTML Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Writing Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Adding Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
IntelliSense and Outlining. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Assembly References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Namespace Imports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Visual Studio Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Single-Step Debugging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Variable Watches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
PART 2
■ ■ ■
Developing ASP.NET Applications
■CHAPTER 5 Web Form Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
The Anatomy of an ASP.NET Application . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
ASP.NET File Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
ASP.NET Application Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Application Updates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
■CONTENTS ix
6218ch00FM.qxd 3/24/06 5:21 PM Page ix
A Simple One-Page Web Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

Basic Web Control Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
The Web Control Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
■CONTENTSx
6218ch00FM.qxd 3/24/06 5:21 PM Page x
Web Control Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
The WebControl Base Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Units. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Enumerated Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Colors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Focus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
The Default Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
List Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Multiple-Select List Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
The BulletedList Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Table Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Web Control Events and AutoPostBack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
How Postback Events Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
The Page Life Cycle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
A Simple Web Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Improving the Greeting Card Applet . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Generating the Cards Automatically . . . . . . . . . . . . . . . . . . . . . . . . . . 205
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
■CHAPTER 7 Tracing, Logging, and Error Handling. . . . . . . . . . . . . . . . . . . . . 209
Common Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
The Exception Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
The Exception Chain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Handling Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Catching Specific Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

Literals and Metacharacters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Finding a Regular Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
A Validated Customer Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Validation Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Rich Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
The Calendar Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
The AdRotator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Pages with Multiple Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
The MultiView Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
The Wizard Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
■CHAPTER 9 State Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
The Problem of State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
View State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
A View State Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Making View State Secure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
■CONTENTSxii
6218ch00FM.qxd 3/24/06 5:21 PM Page xii
Retaining Member Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Storing Custom Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Transferring Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Cross-Page Posting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
The Query String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Custom Cookies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
A Cookie Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Session State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Session Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Using Session State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
A Session State Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Session State Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329

Defining a Site Map. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Seeing a Simple Site Map in Action . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Binding an Ordinary Page to a Site Map . . . . . . . . . . . . . . . . . . . . . . 380
Binding a Master Page to a Site Map. . . . . . . . . . . . . . . . . . . . . . . . . 381
Binding Portions of a SiteMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Navigating Programmatically. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Mapping URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
The SiteMapPath Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Customizing the SiteMapPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Using SiteMapPath Styles and Templates . . . . . . . . . . . . . . . . . . . . . 394
Adding Custom Site Map Information. . . . . . . . . . . . . . . . . . . . . . . . . 396
The TreeView Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
TreeView Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
TreeView Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
The Menu Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Menu Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
Menu Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
■CHAPTER 12 Deploying ASP.NET Applications . . . . . . . . . . . . . . . . . . . . . . . . . . 411
ASP.NET Applications and the Web Server . . . . . . . . . . . . . . . . . . . . . . . . . 411
How Web Servers Work. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
Web Application URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
Web Farms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
IIS (Internet Information Services) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
Installing IIS 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Installing IIS 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
■CONTENTSxiv
6218ch00FM.qxd 3/24/06 5:21 PM Page xiv
Registering the ASP.NET File Mappings . . . . . . . . . . . . . . . . . . . . . . . 420
Verifying That ASP.NET Is Correctly Installed. . . . . . . . . . . . . . . . . . . 421

The SQL Delete Statement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
■CONTENTS xv
6218ch00FM.qxd 3/24/06 5:21 PM Page xv
ADO.NET Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Data Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
The Data Provider Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Direct Data Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Importing the Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Creating a Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
The Connection String. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
Windows Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Connection String Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Making the Connection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Defining a Select Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
Using a Command with a DataReader . . . . . . . . . . . . . . . . . . . . . . . . 479
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Filling the List Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Updating Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
Enhancing the Author Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
Creating More Robust Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Disconnected Data Access. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Selecting Disconnected Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
Selecting Multiple Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Modifying Disconnected Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
Adding Rows to a DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
Updating Disconnected Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
The CommandBuilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Updating a DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
Controlling Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
A Disconnected Update Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508

Updating Records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
■CHAPTER 15 The Data Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
The GridView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Automatically Generating Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Defining Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
Formatting the GridView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Formatting Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
Using Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
Formatting-Specific Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Selecting a GridView Row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Adding a Select Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
Using Selection to Create Master-Details Pages . . . . . . . . . . . . . . . 574
■CONTENTS xvii
6218ch00FM.qxd 3/24/06 5:21 PM Page xvii
Editing with the GridView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
Sorting and Paging the GridView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Paging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Using GridView Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Using Multiple Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
Editing Templates in Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
Handling Events in a Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
Editing with a Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
The DetailsView and FormView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
The DetailsView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
The FormView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
■CHAPTER 16 Files and Streams. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Files and Web Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601

Working with XML Documents in Memory . . . . . . . . . . . . . . . . . . . . 648
Reading an XML Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
Searching an XML Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
XML Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
XML Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
XSD Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
Validating an XML Document. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
XML Display and Transforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
The Xml Web Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
XML Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
Nonhierarchical Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
Hierarchical Binding with the TreeView . . . . . . . . . . . . . . . . . . . . . . . 670
Binding to XML Content from Other Sources . . . . . . . . . . . . . . . . . . 672
XML in ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
Accessing a DataSet As XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
Accessing XML Through the DataSet . . . . . . . . . . . . . . . . . . . . . . . . . 676
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
PART 4
■ ■ ■
Website Security
■CHAPTER 18 Security Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
Determining Security Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
Restricted File Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
Security Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682
■CONTENTS xix
6218ch00FM.qxd 3/24/06 5:21 PM Page xix
The ASP.NET Security Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
Security Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
Certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
Secure Sockets Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688

■CONTENTSxx
6218ch00FM.qxd 3/24/06 5:21 PM Page xx
■CHAPTER 20 Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
Understanding Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
Profile Performance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
How Profiles Store Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
Using the SqlProfileProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
Enabling Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
Profiles with SQL Server 2005 Express Edition . . . . . . . . . . . . . . . . 760
Configuring the Profile Provider to Use a Different Database. . . . . 761
Manually Creating the Profile Tables . . . . . . . . . . . . . . . . . . . . . . . . . 763
The Profile Databases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
Defining Profile Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766
Using Profile Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
Profile Serialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
Profile Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
Profiles and Custom Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
The Profile API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
Anonymous Profiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
PART 5
■ ■ ■
Web Services
■CHAPTER 21 Web Services Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785
Internet Programming Then and Now . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785
Components and the COM Revolution . . . . . . . . . . . . . . . . . . . . . . . . 786
Web Services and the Programmable Web . . . . . . . . . . . . . . . . . . . . 787
When Web Services Make Sense . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
The Open-Standards Plumbing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
Web Services Description Language . . . . . . . . . . . . . . . . . . . . . . . . . 789

Creating a Web Reference in Visual Studio . . . . . . . . . . . . . . . . . . . . 820
Creating a Proxy with WSDL.exe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
Dissecting the Proxy Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
Dynamic Web Service URLs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
Using the Proxy Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
Waiting and Timeouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
Web Service Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830
Connecting Through a Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
■CHAPTER 23 Enhancing Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
State Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
The StockQuote Service with State Management . . . . . . . . . . . . . . 836
Consuming a Stateful Web Service. . . . . . . . . . . . . . . . . . . . . . . . . . . 838
■CONTENTSxxii
6218ch00FM.qxd 3/24/06 5:21 PM Page xxii
Web Service Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
Windows Authentication with a Web Service . . . . . . . . . . . . . . . . . . 843
Ticket-Based Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
Ticket-Based Authentication with SOAP Headers. . . . . . . . . . . . . . . 849
Using SOAP Headers in the Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
Web Service Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853
An Example with TerraService. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
Adding the Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856
Testing the Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857
Searching for More Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
Displaying a Tile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860
Windows Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864
PART 6
■ ■ ■

User Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901
Creating a Simple User Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
Independent User Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
Integrated User Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
User Control Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
Passing Information with Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912
User Control Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
Custom Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
Creating a Simple Derived Control . . . . . . . . . . . . . . . . . . . . . . . . . . . 917
Creating a Custom Control Library . . . . . . . . . . . . . . . . . . . . . . . . . . . 919
Using a Custom Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
Custom Controls and Default Values . . . . . . . . . . . . . . . . . . . . . . . . . 923
Changing Control Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
Creating a Web Control from Scratch. . . . . . . . . . . . . . . . . . . . . . . . . 929
Maintaining State Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931
Design-Time Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
Creating a Composite Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
Custom Control Events and Postbacks. . . . . . . . . . . . . . . . . . . . . . . . 937
Dynamic Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943
Basic Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943
Drawing Custom Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946
Placing Custom Images Inside Web Pages . . . . . . . . . . . . . . . . . . . . 947
The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949
■CONTENTSxxiv
6218ch00FM.qxd 3/24/06 5:21 PM Page xxiv


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status