| About the Author | p. xv |
| Acknowledgments | p. xvii |
| Introduction | p. xix |
| ASP.NET Introduction | p. 1 |
| The .NET Framework | p. 3 |
| The Evolution of Web Development | p. 3 |
| The .NET Framework | p. 9 |
| VB .NET, C#, and the .NET Languages | p. 12 |
| The Common Language Runtime | p. 14 |
| The .NET Class Library | p. 15 |
| Visual Studio .NET | p. 16 |
| The Last Word | p. 17 |
| Setting Up Internet Information Services and ASP.NET | p. 19 |
| Web Servers and You | p. 19 |
| Managing Websites | p. 24 |
| Installing ASP.NET | p. 37 |
| The Last Word | p. 42 |
| Learning the Visual Basic .NET Language | p. 43 |
| The .NET Languages | p. 43 |
| The Evolution of VB .NET | p. 44 |
| Variables and Data Types | p. 46 |
| Variable Operations | p. 52 |
| Object-Based Manipulation | p. 56 |
| Conditional Structures | p. 62 |
| Loop Structures | p. 64 |
| Functions and Subroutines | p. 67 |
| The Last Word | p. 71 |
| Types, Objects, and Namespaces | p. 73 |
| The Basics About Classes | p. 73 |
| Building a Basic Class | p. 76 |
| Value Types and Reference Types | p. 85 |
| Advanced Class Programming | p. 89 |
| Understanding Namespaces and Assemblies | p. 92 |
| The Last Word | p. 96 |
| Developing ASP.NET Applications | p. 97 |
| ASP.NET Applications | p. 99 |
| The Anatomy of an ASP.NET Application | p. 99 |
| ASP.NET File Types | p. 100 |
| A Simple Application from Start to Finish | p. 104 |
| Code-Behind | p. 110 |
| The Global.asax Application File | p. 120 |
| Understanding the ASP.NET Classes | p. 123 |
| ASP.NET Configuration | p. 125 |
| The Last Word | p. 132 |
| Web Form Fundamentals | p. 133 |
| A Simple Page Applet | p. 133 |
| Improving the Currency Converter | p. 144 |
| A Deeper Look at HTML Control Classes | p. 150 |
| The Page Class | p. 156 |
| The Last Word | p. 163 |
| Web Controls | p. 165 |
| Stepping Up to Web Controls | p. 165 |
| Web Control Classes | p. 169 |
| List Controls | p. 174 |
| Table Controls | p. 177 |
| AutoPostBack and Web Control Events | p. 183 |
| A Simple Web Page Applet | p. 190 |
| The Last Word | p. 199 |
| Using Visual Studio .NET | p. 201 |
| The Promise of Visual Studio .NET | p. 201 |
| Starting a Visual Studio .NET Project | p. 202 |
| Designing Web Pages | p. 213 |
| Writing Code | p. 217 |
| Visual Studio .NET Debugging | p. 225 |
| The Last Word | p. 232 |
| Validation and Rich Controls | p. 233 |
| The Calendar Control | p. 233 |
| The AdRotator | p. 239 |
| Validation | p. 242 |
| A Simple Validation Example | p. 246 |
| Understanding Regular Expressions | p. 252 |
| Other Rich Controls | p. 261 |
| The Microsoft Internet Explorer Controls | p. 262 |
| The Last Word | p. 272 |
| State Management | p. 273 |
| The Problem of State | p. 273 |
| View State | p. 274 |
| Transferring Information | p. 281 |
| Custom Cookies | p. 285 |
| Session State | p. 288 |
| Session State Configuration | p. 294 |
| Application State | p. 300 |
| An Overview of State Management Choices | p. 302 |
| The Last Word | p. 303 |
| Tracing, Logging, and Error Handling | p. 305 |
| Common Errors | p. 305 |
| The .NET Exception Object | p. 308 |
| Handling Exceptions | p. 310 |
| Throwing Your Own Exceptions | p. 316 |
| Logging Exceptions | p. 319 |
| Error Pages | p. 328 |
| Page Tracing | p. 333 |
| The Last Word | p. 345 |
| Deploying ASP .NET | p. 347 |
| Making Your Website Visible | p. 347 |
| Deploying a Simple Site | p. 348 |
| Deploying with Visual Studio .NET | p. 352 |
| Migrating from ASP | p. 360 |
| The Last Word | p. 362 |
| Working with Data | p. 363 |
| Introducing ADO.NET | p. 365 |
| Introducing ADO.NET and Data Management | p. 365 |
| The ADO.NET Object Model | p. 373 |
| Comparing ADO and ADO.NET | p. 383 |
| The Last Word | p. 385 |
| ADO.NET Data Access | p. 387 |
| About the ADO.NET Examples | p. 387 |
| SQL Basics | p. 388 |
| The Select Statement | p. 390 |
| The SQL Update Statement | p. 393 |
| The SQL Insert Statement | p. 394 |
| The SQL Delete Statement | p. 396 |
| Accessing Data the Easy Way | p. 396 |
| Creating a Connection | p. 397 |
| Defining a Select Command | p. 401 |
| Updating Data | p. 407 |
| Using Disconnected Data | p. 414 |
| Updating Disconnected Data | p. 422 |
| The Last Word | p. 430 |
| Data Binding | p. 431 |
| Introducing Data Binding | p. 431 |
| Single-Value Data Binding | p. 433 |
| Repeated-Value Data Binding | p. 440 |
| Data Binding with Databases | p. 448 |
| The Last Word | p. 455 |
| The DataList, DataGrid, and Repeater | p. 457 |
| Introducing Templates | p. 457 |
| Using Templates with the DataList | p. 457 |
| Data Binding with Multiple Templates | p. 467 |
| Comparing the Template Controls | p. 472 |
| Preparing Your List for Selection and Editing | p. 481 |
| Selecting Items | p. 482 |
| Editing Items | p. 485 |
| Paging with the DataGrid | p. 494 |
| Sorting with the DataGrid | p. 496 |
| Sorting and Filtering with the DataView | p. 498 |
| The Last Word | p. 500 |
| Files, Streams, and E-mail | p. 501 |
| Files and Web Applications | p. 501 |
| File System Information | p. 502 |
| Reading and Writing with Streams | p. 513 |
| Allowing File Uploads | p. 521 |
| Sending Mail | p. 524 |
| The Last Word | p. 527 |
| Using XML | p. 529 |
| XML's Hidden Role in .NET | p. 529 |
| XML Explained | p. 530 |
| The XML Classes | p. 536 |
| XML Validation | p. 552 |
| XML Display and Transforms | p. 559 |
| XML in ADO.NET | p. 563 |
| The Last Word | p. 567 |
| Web Services | p. 569 |
| Web Services Architecture | p. 571 |
| Internet Programming Then and Now | p. 571 |
| Web Service Description Language | p. 574 |
| SOAP | p. 580 |
| Communicating with a Web Service | p. 581 |
| Web Service Discovery and UDDI | p. 583 |
| The Last Word | p. 586 |
| Creating Web Services | p. 587 |
| Web Service Basics | p. 587 |
| The StockQuote Web Service | p. 588 |
| Documenting Your Web Service | p. 590 |
| Testing Your Web Service | p. 592 |
| Web Service Data Types | p. 597 |
| The ASP.NET Intrinsic Objects | p. 602 |
| Other Web Service Options | p. 605 |
| The Last Word | p. 613 |
| Using Web Services | p. 615 |
| Consuming a Web Service | p. 615 |
| Using the Proxy Class | p. 625 |
| An Example with TerraService | p. 633 |
| Windows Clients | p. 639 |
| The Last Word | p. 641 |
| Advanced ASP.NET | p. 643 |
| Component-Based Programming | p. 645 |
| Why Use Components? | p. 645 |
| Component Jargon | p. 647 |
| Creating a Simple Component | p. 650 |
| The Component Class | p. 650 |
| Properties and State | p. 656 |
| Database Components | p. 659 |
| Using COM Components | p. 672 |
| The Last Word | p. 677 |
| Custom Controls | p. 679 |
| User Controls | p. 679 |
| Derived Custom Controls | p. 695 |
| Dynamic Graphics | p. 718 |
| The Last Word | p. 724 |
| Caching and Performance Tuning | p. 725 |
| Designing for Scalability | p. 725 |
| Profiling | p. 729 |
| Caching | p. 738 |
| Output Caching | p. 738 |
| Data Caching | p. 748 |
| The Last Word | p. 757 |
| Implementing Security | p. 759 |
| Determining Security Requirements | p. 759 |
| The ASP.NET Security Model | p. 760 |
| Forms Authentication | p. 768 |
| Windows Authentication | p. 784 |
| Impersonation | p. 793 |
| The Last Word | p. 795 |
| The IBuySpy Case Studies | p. 797 |
| The IBuySpy Store | p. 802 |
| The IBuySpy Portal | p. 827 |
| The Last Word | p. 836 |
| ASP.NET Reference | p. 837 |
| HTML Server Controls | p. 839 |
| HTML Controls | p. 839 |
| HtmlButton | p. 841 |
| Web Controls | p. 857 |
| Basic Web Controls | p. 857 |
| List Controls | p. 873 |
| Rich Controls | p. 879 |
| Validation Controls | p. 886 |
| ValidationSummary | p. 890 |
| Data Controls | p. 891 |
| Configuration Files | p. 909 |
| Configuration Files | p. 909 |
| Configuration File Sections | p. 909 |
| Index | p. 935 |
| Table of Contents provided by Ingram. All Rights Reserved. |