Tải bản đầy đủ (.pdf) (1,017 trang)

Beginning ASP.NET 4 in C# 2010 ppsx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (21.6 MB, 1,017 trang )

this print for content only—size & color not accurate spine = 1.90625" 1016 page count
MacDonald
ASP.NET 4 in C# 2010
THE EXPERT’S VOICE
®
IN .NET
Beginning
ASP.NET 4
in C# 2010
CYAN
MAGENTA
YELLOW
BLACK
PANTONE 123 C
Matthew MacDonald
Companion
eBook Available
Start your journey with the fundamentals
of building ASP.NET websites
BOOKS FOR PROFESSIONALS BY PROFESSIONALS
®
Beginning ASP.NET 4 in C# 2010
Dear Reader,
Welcome to the most up-to-date and comprehensive beginning ASP NET book
you’ll find on any shelf. As you probably already know, ASP.NET is a framework
for developing modern web applications. In the right hands, ASP.NET produces
web applications that are secure, blisteringly fast, and highly scalable. Best of
all, ASP.NET includes a huge set of ready-to-use features like website naviga-
tion, data binding, themes, and user management. ASP.NET allows you to cre-
ate everything from a dynamic personal website to a full-scale e-commerce
storefront.


In this book, I assume that you have only basic knowledge of C#, although
those coming from a more experienced background will find that the basics are
reviewed quickly and efficiently. As you explore ASP.NET, you’ll learn the key
database, security, and performance principles you need to know in order to
design a solid web application. My book will also teach you to use techniques
such as object-oriented programming and code-behind development from the
beginning, rather than fake it with simplified techniques that won’t work well
in real life.
Once you’ve reached the end of the book, you will have mastered the core
techniques of website programming, and you’ll have the knowledge necessary
to begin work as a professional ASP.NET developer.
Welcome aboard!
Matthew MacDonald (Microsoft MVP, MCSD)
Matthew MacDonald,
Author of
Pro ASP.NET 4 in C# 2010
Pro Silverlight 4 in C#
Pro WPF in C# 2010
ASP.NET: The Complete
Reference
US $49.99
Shelve in:
Programming Languages / C#
User level:
Beginning–Intermediate
THE APRESS ROADMAP
Pro
ASP.NET 4 CMS
Pro
ASP.NET MVC 2 Framework

Pro
ASP.NET 4 in C# 2010
Pro
C# 2010 and the
.NET 4 Platform
Beginning
ASP.NET 4 in C# 2010
www.apress.com
SOURCE CODE ONLINE
Companion eBook

See last page for details
on $10 eBook version
ISBN 978-1-4302-2608-6
9 781430 226086
5 49 9 9
Beginning


Beginning ASP.NET 4
in C# 2010











■ ■ ■
Matthew MacDonald


Beginning ASP.NET in C# 2010
Copyright © 2010 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 the publisher.
ISBN-13 (pbk): 978-1-4302-2608-6
ISBN-13 (electronic): 978-1-4302-2609-3
Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1
Trademarked names, logos, and images may appear in this book. Rather than use a trademark
symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and
images only in an editorial fashion and to the benefit of the trademark owner, with no intention of
infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of opinion as to whether or not
they are subject to proprietary rights.
President and Publisher: Paul Manning
Lead Editor: Ewan Buckingham
Technical Reviewer: Damien Foggon
Editorial Board: Clay Andres, Steve Anglin, Mark Beckner, Ewan Buckingham, Gary Cornell,
Jonathan Gennick, Jonathan Hassell, Michelle Lowman, Matthew Moodie, Duncan Parkes,
Jeffrey Pepper, Frank Pohlmann, Douglas Pundick, Ben Renow-Clarke, Dominic
Shakeshaft, Matt Wade, Tom Welsh
Coordinating Editor: Anne Collett
Copy Editor: Kim Wimpsett
Compositor: Mary Sudul

Indexer: BIM Indexing & Proofreading Services
Artist: April Milne
Cover Designer: Anna Ishchenko
Distributed to the book trade worldwide by Springer Science+Business Media, LLC., 233 Spring
Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-
, or visit www.springeronline.com.
For information on translations, please e-mail
, or visit www.apress.com.
Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional
use. eBook versions and licenses are also available for most titles. For more information, reference
our Special Bulk Sales–eBook Licensing web page at www.apress.com/info/bulksales.
The information in this book is distributed on an “as is” basis, without warranty. Although every
precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall
have any liability to any person or entity with respect to any loss or damage caused or alleged to be
caused directly or indirectly by the information contained in this work.








For my wonderful family,
Faria, Maya, and Brenna








■ CONTENTS

v
Contents

About the Author xxv
About the Technical Reviewer xxvi
Acknowledgments xxvii
Introduction xxviii
Part 1: Introducing .NET 1
■ Chapter 1: The .NET Framework 3
The Evolution of Web Development 3
HTML and HTML Forms 3
Server-Side Programming 6
Client-Side Programming 7
The .NET Framework 9
C#, VB, and the .NET Languages 11
The Common Language Runtime 13
The .NET Class Library 14
Visual Studio 15
The Last Word 16
■ Chapter 2: The C# Language 17
The .NET Languages 17
C# Language Basics 18
Case Sensitivity 18
Commenting 18
Statement Termination 19
■ CONTENTS


vi
Blocks 20
Variables and Data Types 20
Assignment and Initializers 22
Strings and Escaped Characters 24
Arrays 24
Enumerations 26
Variable Operations 27
Advanced Math 29
Type Conversions 29
Object-Based Manipulation 31
The String Type 32
The DateTime and TimeSpan Types 34
The Array Type 36
Conditional Logic 37
The if Statement 38
The switch Statement 39
Loops 40
The for Loop 40
The foreach Loop 41
The while loop 42
Methods 43
Parameters 44
Method Overloading 45
Optional and Named Parameters 46
Delegates 47
The Last Word 48
■ Chapter 3: Types, Objects, and Namespaces 49
The Basics About Classes 49

Static Members 50
A Simple Class 51
■ CONTENTS

vii
Building a Basic Class 51
Creating an Object 53
Adding Properties 54
Automatic Properties 56
Adding a Method 56
Adding a Constructor 57
Adding an Event 59
Testing the Product Class 60
Value Types and Reference Types 63
Assignment Operations 63
Equality Testing 64
Passing Parameters by Reference and by Value 64
Reviewing .NET Types 65
Understanding Namespaces and Assemblies 67
Using Namespaces 68
Importing Namespaces 69
Assemblies 70
Advanced Class Programming 71
Inheritance 71
Static Members 73
Casting Objects 74
Partial Classes 76
Generics 77
The Last Word 79
Part 2: Developing ASP.NET Applications 81

■ Chapter 4: Visual Studio 83
The Promise of Visual Studio 83
Creating Websites 84
Creating an Empty Web Application 85
■ CONTENTS

viii
Websites and Web Projects 89
The Hidden Solution Files 90
The Solution Explorer 91
Adding Web Forms 92
Migrating a Website from a Previous Version of Visual Studio 93
Designing a Web Page 95
Adding Web Controls 96
The Properties Window 98
The Anatomy of a Web Form 100
The Web Form Markup 100
The Page Directive 101
The Doctype 102
The Essentials of XHTML 104
Writing Code 110
The Code-Behind Class 110
Adding Event Handlers 110
Outlining 112
IntelliSense 113
Code Formatting and Coloring 117
Visual Studio Debugging 118
The Visual Studio Web Server 118
Single-Step Debugging 119
Variable Watches 124

The Last Word 125
■ Chapter 5: Web Form Fundamentals 127
The Anatomy of an ASP.NET Application 127
ASP.NET File Types 128
ASP.NET Application Directories 129
Introducing Server Controls 130
HTML Server Controls 131
■ CONTENTS

ix
Converting an HTML Page to an ASP.NET Page 131
View State 134
The HTML Control Classes 135
Adding the Currency Converter Code 138
Event Handling 140
Behind the Scenes with the Currency Converter 142
Error Handling 144
Improving the Currency Converter 144
Adding Multiple Currencies 145
Storing Information in the List 146
Adding Linked Images 147
Setting Styles 150
A Deeper Look at HTML Control Classes 151
HTML Control Events 151
Advanced Events with the HtmlInputImage Control 152
The HtmlControl Base Class 154
The HtmlContainerControl Class 155
The HtmlInputControl Class 155
The Page Class 156
Sending the User to a New Page 157

HTML Encoding 158
Application Events 160
The global.asax File 161
Additional Application Events 162
ASP.NET Configuration 163
The web.config File 163
Nested Configuration 164
Storing Custom Settings in the web.config File 166
The Website Administration Tool (WAT) 168
The Last Word 170
■ CONTENTS
x
■ Chapter 6: Web Controls 173
Stepping Up to Web Controls. 173
Basic Web Control Classes . 174
The Web Control Tags 175
Web Control Classes. 176
The WebControl Base Class 177
Units 179
Enumerations 179
Colors 180
Fonts 181
Focus 183
The Default Button 183
List Controls. 184
Multiple-Select List Controls . 185
The BulletedList Control 187
Table Controls. 188
Web Control Events and AutoPostBack . 193
How Postback Events Work. 197

The Page Life Cycle 198
A Simple Web Page. 201
Improving the Greeting Card Generator. 206
Generating the Cards Automatically . 208
The Last Word. 211
■ Chapter 7: Error Handling, Logging, and Tracing 213
Common Errors. 213
Exception Handling. 215
The Exception Class 215
The Exception Chain 217
Download from Wow! eBook <www.wowebook.com>
■ CONTENTS

xi
Handling Exceptions 218
Catching Specific Exceptions 219
Nested Exception Handlers 221
Exception Handling in Action 222
Mastering Exceptions 224
Throwing Your Own Exceptions 224
Logging Exceptions 229
Viewing the Windows Event Logs 229
Writing to the Event Log 232
Custom Logs 234
A Custom Logging Class 236
Retrieving Log Information 237
Page Tracing 239
Enabling Tracing 240
Tracing Information 240
Writing Trace Information 246

Application-Level Tracing 250
The Last Word 252
■ Chapter 8: State Management 253
The Problem of State 253
View State 253
The ViewState Collection 254
A View State Example 254
Making View State Secure 255
Retaining Member Variables 257
Storing Custom Objects 259
Transferring Information Between Pages 260
Cross-Page Posting 260
The Query String 265
■ CONTENTS

xii
Cookies 269
A Cookie Example 271
Session State 272
Session Tracking 272
Using Session State 273
A Session State Example 274
Session State Configuration 277
Cookieless 278
Timeout 281
Mode 281
Application State 286
An Overview of State Management Choices 288
The Last Word 290
Part 3: Building Better Web Forms 291

■ Chapter 9: Validation 293
Understanding Validation 293
The Validation Controls 294
Server-Side Validation 295
Client-Side Validation 295
The Validation Controls 295
A Simple Validation Example 297
Other Display Options 299
Manual Validation 302
Validating with Regular Expressions 304
A Validated Customer Form 308
Validation Groups 313
The Last Word 314
■ CONTENTS

xiii
■ Chapter 10: Rich Controls 315
The Calendar 315
Formatting the Calendar 317
Restricting Dates 319
The AdRotator 323
The Advertisement File 323
The AdRotator Class 325
Pages with Multiple Views 326
The MultiView Control 328
The Wizard Control 333
The Last Word 341
■ Chapter 11: User Controls and Graphics 343
User Controls 343
Creating a Simple User Control 344

Independent User Controls 347
Integrated User Controls 349
User Control Events 352
Passing Information with Events 354
Dynamic Graphics 357
Basic Drawing 357
Drawing a Custom Image 360
Placing Custom Images Inside Web Pages 361
Image Format and Quality 363
The Last Word 366
■ Chapter 12: Styles, Themes, and Master Pages 367
Styles 367
Style Types 368
Creating a Basic Inline Style 368
Creating a Style Sheet 377
■ CONTENTS

xiv
Applying Style Sheet Rules 380
Themes 383
How Themes Work 383
Applying a Simple Theme 385
Handling Theme Conflicts 386
Creating Multiple Skins for the Same Control 388
More Advanced Skins 389
Master Page Basics 391
A Simple Master Page and Content Page 392
How Master Pages and Content Pages Are Connected 396
A Master Page with Multiple Content Regions 398
Default Content 401

Master Pages and Relative Paths 402
Advanced Master Pages 403
Style-Based Layouts 403
Code in a Master Page 408
Interacting with a Master Page Programmatically 409
The Last Word 410
■ Chapter 13: Website Navigation 411
Site Maps 411
Defining a Site Map 412
Seeing a Simple Site Map in Action 416
Binding an Ordinary Page to a Site Map 416
Binding a Master Page to a Site Map 418
Binding Portions of a Site Map 420
The SiteMap Class 425
URL Mapping and Routing 427
URL Mapping 428
URL Routing 428
■ CONTENTS

xv
The SiteMapPath Control 430
Customizing the SiteMapPath 431
Using SiteMapPath Styles and Templates 432
Adding Custom Site Map Information 434
The TreeView Control 435
TreeView Properties 436
TreeView Styles 438
The Menu Control 442
Menu Styles 444
Menu Templates 445

The Last Word 448
Part 4: Working with Data 449
■ Chapter 14: ADO.NET Fundamentals 451
Understanding Databases 451
Configuring Your Database 453
SQL Server Express 453
Browsing and Modifying Databases in Visual Studio 454
The sqlcmd Command-Line Tool 457
SQL Basics 458
Running Queries in Visual Studio 459
The Select Statement 461
The SQL Update Statement 463
The SQL Insert Statement 465
The SQL Delete Statement 465
The Data Provider Model 466
Direct Data Access 467
Creating a Connection 469
The Select Command 475
The DataReader 476
■ CONTENTS

xvi
Putting It All Together 476
Updating Data 481
Disconnected Data Access 491
Selecting Disconnected Data 492
Selecting Multiple Tables 494
Defining Relationships 495
The Last Word 498
■ Chapter 15: Data Binding 499

Introducing Data Binding 499
Types of ASP.NET Data Binding 500
How Data Binding Works 500
Single-Value Data Binding 500
A Simple Data Binding Example 501
Simple Data Binding with Properties 504
Problems with Single-Value Data Binding 505
Using Code Instead of Simple Data Binding 506
Repeated-Value Data Binding 506
Data Binding with Simple List Controls 507
A Simple List Binding Example 508
Strongly Typed Collections 509
Multiple Binding 510
Data Binding with a Dictionary Collection 512
Using the DataValueField Property 513
Data Binding with ADO.NET 514
Creating a Record Editor 516
Data Source Controls 521
The Page Life Cycle with Data Binding 523
The SqlDataSource 523
Selecting Records 525
Parameterized Commands 527
■ CONTENTS

xvii
Handling Errors 532
Updating Records 533
The Last Word 537
■ Chapter 16: The Data Controls 539
The GridView 539

Automatically Generating Columns 540
Defining Columns 542
Formatting the GridView 546
Formatting Fields 546
Using Styles 547
Formatting-Specific Values 550
Selecting a GridView Row 552
Adding a Select Button 553
Using Selection to Create Master-Details Pages 554
Editing with the GridView 556
Sorting and Paging the GridView 559
Sorting 559
Paging 561
Using GridView Templates 563
Using Multiple Templates 565
Editing Templates in Visual Studio 566
Handling Events in a Template 567
Editing with a Template 568
The DetailsView and FormView 573
The DetailsView 573
The FormView 575
The Last Word 578
■ Chapter 17: Files and Streams 579
Files and Web Applications 579
■ CONTENTS

xviii
File System Information 580
The Path Class 581
The Directory and File Classes 582

The DirectoryInfo and FileInfo Classes 587
The DriveInfo Class 589
A Sample File Browser 590
Reading and Writing with Streams 594
Text Files 594
Binary Files 596
Shortcuts for Reading and Writing Files 597
A Simple Guest Book 598
Allowing File Uploads 604
The FileUpload Control 604
The Last Word 607
■ Chapter 18: XML 609
XML Explained 609
Improving the List with XML 611
XML Basics 612
Attributes 613
Comments 614
The XML Classes 615
The XML TextWriter 615
The XML Text Reader 618
Working with XML Documents in Memory 623
Reading an XML Document 628
Searching an XML Document 631
XML Validation 632
XML Namespaces 632
XML Schema Definition 635
Validating an XML Document 637
■ CONTENTS

xix

XML Display and Transforms 640
The Xml Web Control 642
The Last Word 643
Part 5: Website Security 645
■ Chapter 19: Security Fundamentals 647
Understanding Security 647
Testing and Deploying Security Settings 648
Authentication and Authorization 649
Forms Authentication 649
Web.config Settings 651
Authorization Rules 651
The WAT 655
The Login Page 657
Windows Authentication 663
Web.config Settings 663
A Windows Authentication Test 666
The Last Word 667
■ Chapter 20: Membership 669
The Membership Data Store 669
Membership with SQL Server Express 671
Using the Full Version of SQL Server 673
Configuring the Membership Provider 676
Creating Users with the WAT 679
The Membership and MembershipUser Classes 682
Authentication with Membership 686
Disabled Accounts 687
The Security Controls 687
The Login Control 688
The CreateUserWizard Control 694
■ CONTENTS

xx
The PasswordRecovery Control. 698
Role-Based Security . 700
Creating and Assigning Roles. 701
Restricting Access Based on Roles . 705
The LoginView Control 705
The Last Word. 707
■ Chapter 21: Profiles 709
Understanding Profiles . 709
Profile Performance 710
How Profiles Store Data 710
Using the SqlProfileProvider. 712
Enabling Authentication 712
Using SQL Server Express 713
Using the Full Version of SQL Server. 713
The Profile Databases 714
Defining Profile Properties 716
Using Profile Properties 717
Profile Serialization 719
Profile Groups 721
Profiles and Custom Data Types. 722
The Profile API 725
Anonymous Profiles 728
The Last Word. 731
Part 6: Advanced ASP.NET 733
■ Chapter 22: Introducing ASP.NET 735
Why Use Components?. 735
Component Jargon . 736
Three-Tier Design 736
Encapsulation 738

Download from Wow! eBook <www.wowebook.com>
■ CONTENTS

xxi
Business Objects 738
Data Objects 738
Components and Classes 738
Creating a Component 739
Classes and Namespaces 740
Class Members 742
Adding a Reference to the Component 742
Using the Component 745
Properties and State 747
A Stateful Account Class 748
A Stateless AccountUtility Class 749
Data-Access Components 750
A Simple Data-Access Component 750
Using the Data-Access Component 754
Enhancing the Component with Error Handling 757
Enhancing the Component with Aggregate Information 758
The ObjectDataSource 759
Making Classes the ObjectDataSource Can Understand 759
Selecting Records 760
Using Method Parameters 761
Updating Records 762
The Last Word 764
■ Chapter 23: Caching 765
Understanding Caching 765
When to Use Caching 766
Caching in ASP.NET 767

Output Caching 767
Caching on the Client Side 769
Caching and the Query String 769
Caching with Specific Query String Parameters 770
■ CONTENTS

xxii
A Multiple Caching Example 771
Fragment Caching 772
Cache Profiles 773
Data Caching 774
Adding Items to the Cache 774
A Simple Cache Test 776
Caching to Provide Multiple Views 777
Caching with the Data Source Controls 781
Caching with Dependencies 785
File Dependencies 785
Cache Item Dependencies 786
SQL Server Cache Dependencies 787
The Last Word 790
■ Chapter 24: LINQ and the Entity Framework 791
Understanding LINQ 791
LINQ Basics 792
LINQ Expressions 795
The Entity Framework 799
Creating an Entity Data Model 800
The Data Model Diagram 803
Updating a Data Model 806
The Data Model Code 808
Querying the Data Model 809

Handling Errors 810
Navigating Relationships 812
Getting More Advanced with the Entity Framework 815
Querying with LINQ to Entities 815
Controlling When Data is Loaded 818
Updates, Inserts, and Deletes 820
Managing Concurrency 822
■ CONTENTS

xxiii
The EntityDataSource 823
Displaying Data 823
Editing Data 828
The Last Word 828
■ Chapter 25: ASP.NET AJAX 829
Understanding Ajax 829
Ajax: The Good 830
Ajax: The Bad 830
The ASP.NET AJAX Toolkit 831
The ScriptManager 831
Partial Refreshes 833
A Simple UpdatePanel Test 834
Handling Errors 837
Conditional Updates 839
Triggers 840
Progress Notification 845
Showing a Simulated Progress Bar 845
Cancellation 847
Timed Refreshes 849
The ASP.NET AJAX Control Toolkit 851

Installing the ASP.NET AJAX Control Toolkit 851
The Accordion 853
The AutoCompleteExtender 856
Getting More Controls 859
The Last Word 864
■ Chapter 26: Deploying ASP.NET Applications 865
ASP.NET Applications and the Web Server 865
How Web Servers Work 865
The Virtual Directory 867

×