Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Beginning ASP.NET 2.0 in C# 2005
PREMIUM
Số trang
1185
Kích thước
38.3 MB
Định dạng
PDF
Lượt xem
1674

Beginning ASP.NET 2.0 in C# 2005

Nội dung xem thử

Mô tả chi tiết

Beginning ASP.NET 2.0

in C# 2005

From Novice to Professional

■■■

Matthew MacDonald

MacDonald.book Page i Friday, December 30, 2005 12:59 PM

Beginning ASP.NET 2.0 in C# 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-572-5

ISBN-10 (pbk): 1-59059-572-6

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.

Contributor of Chapter 27: Julian Templeman

Lead Editor: Jonathan Hassell

Technical Reviewer: Ronald Landers

Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Jason Gilmore, Jonathan

Hassell, Chris Mills, Dominic Shakeshaft, Jim Sumser

Project Manager and Production Director: Grace Wong

Copy Edit Manager: Nicole LeClerc

Copy Editor: Kim Wimpsett

Assistant Production Director: Kari Brooks-Copony

Production Editor: Kelly Winquist

Compositor: Pat Christenson

Proofreader: Nancy Riddiough

Indexer: Michael Brinkman

Artist: Kinetic Publishing Services, LLC

Cover Designer: Kurt Krames

Manufacturing Director: Tom Debolski

Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor,

New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail  

  , or

visit 



  .

For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA

94710. Phone 510-549-5930, fax 510-549-5939, e-mail  

, or visit 



.

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 



 in the Source Code section.

You will need to answer questions pertaining to this book in order to successfully download the code.

MacDonald.book Page ii Friday, December 30, 2005 12:59 PM

For my loving wife, Faria

MacDonald.book Page iii Friday, December 30, 2005 12:59 PM

iv

Contents at a Glance

About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvi

About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii

Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxviii

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxix

PART 1 ■ ■ ■ Introducing .NET

■CHAPTER 1 Introducing the .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

■CHAPTER 2 Learning the C# Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

■CHAPTER 3 Types, Objects, and Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

■CHAPTER 4 Introducing Visual Studio 2005. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

PART 2 ■ ■ ■ Developing ASP.NET Applications

■CHAPTER 5 Web Form Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

■CHAPTER 6 Web Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

■CHAPTER 7 Tracing, Logging, and Error Handling. . . . . . . . . . . . . . . . . . . . . . . . . 219

■CHAPTER 8 Validation and Rich Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

■CHAPTER 9 State Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

■CHAPTER 10 Master Pages and Themes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

■CHAPTER 11 Website Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

■CHAPTER 12 Deploying ASP.NET Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

PART 3 ■ ■ ■ Working with Data

■CHAPTER 13 ADO.NET Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

■CHAPTER 14 Data Binding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539

■CHAPTER 15 The Data Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581

■CHAPTER 16 Files and Streams. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625

■CHAPTER 17 XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655

MacDonald.book Page iv Friday, December 30, 2005 12:59 PM

v

PART 4 ■ ■ ■ Website Security

■CHAPTER 18 Security Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707

■CHAPTER 19 Membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739

■CHAPTER 20 Profiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781

PART 5 ■ ■ ■ Web Services

■CHAPTER 21 Web Services Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813

■CHAPTER 22 Creating Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831

■CHAPTER 23 Enhancing Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869

PART 6 ■ ■ ■ Advanced ASP.NET

■CHAPTER 24 Component-Based Programming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903

■CHAPTER 25 Custom Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 937

■CHAPTER 26 Caching and Performance Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985

■CHAPTER 27 Web Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029

■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063

MacDonald.book Page v Friday, December 30, 2005 12:59 PM

MacDonald.book Page vi Friday, December 30, 2005 12:59 PM

vii

Contents

About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvi

About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii

Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxviii

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxix

PART 1 ■ ■ ■ Introducing .NET

■CHAPTER 1 Introducing the .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

The Evolution of Web Development. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

HTML and HTML Forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

Server-Side Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Client-Side Programming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

The Problems with ASP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

The .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

C#, VB .NET, and the .NET Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

The Intermediate Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Other .NET Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

The Common Language Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

The .NET Class Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

.NET 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

C# 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

ASP.NET 2.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Visual Studio 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

MacDonald.book Page vii Friday, December 30, 2005 12:59 PM

viii ■CONTENTS

■CHAPTER 2 Learning the C# Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

The .NET Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

C# Language Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Case Sensitivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Commenting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Line Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Block Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Variables and Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Assignment and Initializers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Strings and Escaped Characters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Enumerations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Variable Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Advanced Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Type Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Object-Based Manipulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

The String Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

The DateTime and TimeSpan Classes. . . . . . . . . . . . . . . . . . . . . . . . . 42

The Array Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Conditional Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

The if Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

The switch Block. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Loop Structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

The for Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

The foreach Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

The while Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Method Overloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Delegates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

■CHAPTER 3 Types, Objects, and Namespaces. . . . . . . . . . . . . . . . . . . . . . . . . . 59

The Basics About Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

Static Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

A Simple Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

MacDonald.book Page viii Friday, December 30, 2005 12:59 PM

■CONTENTS ix

Building a Basic Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Creating a Live Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Adding Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

Adding a Basic Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

Adding a Constructor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Adding a Basic Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Testing the Product Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

Value Types and Reference Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Assignment Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Equality Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

Passing Parameters by Reference and by Value . . . . . . . . . . . . . . . . 74

Reviewing .NET Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

Understanding Namespaces and Assemblies . . . . . . . . . . . . . . . . . . . . . . . 78

Using Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

Importing Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Advanced Class Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

Static Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Casting Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

Partial Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

Generics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

■CHAPTER 4 Introducing Visual Studio 2005 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

The Promise of Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

Creating a Website . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

The Solution Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Designing a Web Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

Adding Web Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

The Properties Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Adding Ordinary HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

HTML Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

Writing Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

Adding Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

IntelliSense and Outlining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

Assembly References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

MacDonald.book Page ix Friday, December 30, 2005 12:59 PM

x ■CONTENTS

Visual Studio Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Single-Step Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

Variable Watches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

PART 2 ■ ■ ■ Developing ASP.NET Applications

■CHAPTER 5 Web Form Fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

The Anatomy of an ASP.NET Application . . . . . . . . . . . . . . . . . . . . . . . . . . 125

ASP.NET File Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

ASP.NET Application Directories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Application Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

A Simple One-Page Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

The ASP Solution—and Its Problems . . . . . . . . . . . . . . . . . . . . . . . . 133

The ASP.NET Solution: Server Controls . . . . . . . . . . . . . . . . . . . . . . . 133

HTML Server Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

View State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

The HTML Control Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

Event Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

Behind the Scenes with the CurrencyConverter . . . . . . . . . . . . . . . 143

Improving the Currency Converter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

Adding Multiple Currencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

Storing Information in the List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

Adding Linked Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

Setting Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

A Deeper Look at HTML Control Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 152

HTML Control Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

Advanced Events with the HtmlInputImage Control . . . . . . . . . . . . 154

The HtmlControl Base Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

The HtmlContainerControl Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

The HtmlInputControl Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

The Page Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

The Controls Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

The HttpRequest Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

The HttpResponse Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

The ServerUtility Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

MacDonald.book Page x Friday, December 30, 2005 12:59 PM

■CONTENTS xi

ASP.NET Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

The web.config File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

Nested Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

Storing Custom Settings in the web.config File . . . . . . . . . . . . . . . . 167

Modifying web.config Settings Programmatically . . . . . . . . . . . . . . 171

The Website Administration Tool (WAT) . . . . . . . . . . . . . . . . . . . . . . 172

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

■CHAPTER 6 Web Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

Stepping Up to Web Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

Basic Web Control Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

The Web Control Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

Web Control Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

The WebControl Base Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

Enumerated Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

Focus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

The Default Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

List Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

Multiple-Select List Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

The BulletedList Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190

Table Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

AutoPostBack and Web Control Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

How Postback Events Work. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

The Page Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

A Simple Web Page Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

Improving the Greeting Card Applet. . . . . . . . . . . . . . . . . . . . . . . . . . 212

Generating the Cards Automatically. . . . . . . . . . . . . . . . . . . . . . . . . . 214

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

■CHAPTER 7 Tracing, Logging, and Error Handling . . . . . . . . . . . . . . . . . . . . 219

Common Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

Exception Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

The Exception Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

The Exception Chain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

MacDonald.book Page xi Friday, December 30, 2005 12:59 PM

xii ■CONTENTS

Handling Exceptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

Catching Specific Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

Nested Exception Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

Exception Handling in Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

Mastering Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

Throwing Your Own Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

Logging Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

Using the EventLog Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

Custom Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

Retrieving Log Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

Error Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

Error Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

A Custom Error Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

Specific Custom Error Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

Page Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Enabling Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

Tracing Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

Writing Trace Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

Reading Trace Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

Application-Level Tracing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

■CHAPTER 8 Validation and Rich Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

The Validation Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

The Validation Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

Client-Side Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

The Validator Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

A Simple Validation Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

Other Display Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

Manual Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

Understanding Regular Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

Literals and Metacharacters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

Finding a Regular Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

A Validated Customer Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282

Validation Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

Rich Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

The Calendar Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

The AdRotator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

MacDonald.book Page xii Friday, December 30, 2005 12:59 PM

■CONTENTS xiii

Pages with Multiple Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

The MultiView Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

The Wizard Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316

■CHAPTER 9 State Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

The Problem of State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

View State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

A View State Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318

Making View Sate Secure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

Retaining Member Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

Storing Custom Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

Transferring Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

Cross-Page Posting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

The Query String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330

Custom Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

A Cookie Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336

Session State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

Session Tracking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

Using Session State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

A Session State Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

Session State Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344

Cookieless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344

Timeout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348

Application State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352

An Overview of State Management Choices . . . . . . . . . . . . . . . . . . . . . . . 354

The Global.asax Application File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356

Application Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

■CHAPTER 10 Master Pages and Themes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

Master Page Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

A Simple Master Page and Content Page . . . . . . . . . . . . . . . . . . . . . 360

How Master Pages and Content Pages Are Connected . . . . . . . . . 364

A Master Page with Multiple Content Regions . . . . . . . . . . . . . . . . . 366

Default Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

Master Pages and Relative Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

MacDonald.book Page xiii Friday, December 30, 2005 12:59 PM

xiv ■CONTENTS

Advanced Master Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

Table-Based Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

Code in a Master Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

Interacting with a Master Page Programmatically. . . . . . . . . . . . . . 375

Themes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

How Themes Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378

Applying a Simple Theme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

Handling Theme Conflicts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

Creating Multiple Skins for the Same Control . . . . . . . . . . . . . . . . . 383

Skins with Templates and Images . . . . . . . . . . . . . . . . . . . . . . . . . . . 384

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387

■CHAPTER 11 Website Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

Site Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

Defining a Site Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

Seeing a Simple Site Map in Action . . . . . . . . . . . . . . . . . . . . . . . . . . 395

Binding an Ordinary Page to a Site Map . . . . . . . . . . . . . . . . . . . . . . 396

Binding a Master Page to a Site Map . . . . . . . . . . . . . . . . . . . . . . . . 397

Binding Portions of a SiteMap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

Navigating Programmatically . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

Mapping URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

The SiteMapPath Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409

Customizing the SiteMapPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

Using SiteMapPath Styles and Templates . . . . . . . . . . . . . . . . . . . . 410

Adding Custom Site Map Information . . . . . . . . . . . . . . . . . . . . . . . . 412

The TreeView Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413

TreeView Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

TreeView Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

The Menu Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420

Menu Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

Menu Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

The Last Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

■CHAPTER 12 Deploying ASP.NET Applications . . . . . . . . . . . . . . . . . . . . . . . . . 427

ASP.NET Applications and the Web Server . . . . . . . . . . . . . . . . . . . . . . . . 427

How Web Servers Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

Web Application URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429

Web Farms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

MacDonald.book Page xiv Friday, December 30, 2005 12:59 PM

Tải ngay đi em, còn do dự, trời tối mất!