international .net association net 4. the authors also ... · visual basic. with this book you will...

30
Bill Evjen, Scott Hanselman, Devin Rader Professional ASP.NET 4 in C# and VB Wrox Programmer to Programmer™ Join the discussion @ p2p.wrox.com

Upload: others

Post on 05-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Web Development / ASP.NET

Take your web development to the next level using ASP.NET 4

Bill Evjen

is one of the most active proponents of .NET technologies.

He is the founder of the

International .NET Association (INETA), author or coauthor of more than two dozen books, and Global Head of Platform Architecture at Thomson Reuters, Lipper.

Scott Hanselman is a principal program manager lead working in

the Server and Tools Online Division at Microsoft. He has a

popular blog and weekly podcast

at www.computerzen.com and speaks worldwide on ASP.NET.

Devin Rader

Devin Rader works at Infragistics where he focuses on

delivering great experiences

to developers using their controls. He’s also a former INETA board member.

$59.99 USA $71.99 CAN

Evjen, Hanselman, Rader

Bill Evjen, Scott Hanselman, Devin Rader

Professional

ASP.NET 4 in C# and VB

ASP.N

ET 4

ProfessionalWrox Programmer to Programmer™Join the discussion @ p2p.wrox.com

in C# and VB

BillEv

is

H

is a prproglead

th

pd

DeRa

D

d

ASP.NET is about making you as productive as possible when building fast and secure web applications. Each release of ASP.NET gets better and removes a lot of the tedious code that you previously needed to put in place, making common ASP.NET tasks easier. With this book, an unparalleled team of authors walks you through the full breadth of ASP.NET and the new and exciting capabilities of ASP.NET 4. The authors also show you how to maximize the abundance of features that ASP.NET offers to make your development process smoother and more efficient.

Professional ASP.NET 4:

• Demonstrates ASP.NET built-in systems such as the membership and role management systems

• Covers everything you need to know about working with and manipu-lating data

• Discusses the plethora of server controls that are at your disposal• Explores new ways to build ASP.NET, such as working with ASP.NET MVC

and ASP.NET AJAX• Examines the full life cycle of ASP.NET, including debugging and error

handling, HTTP modules, the provider model, and more• Features both printed and downloadable C# and VB code examples

wrox.comProgrammer Forums Join our Programmer to Programmer forums to ask and answer programming questions about this book, join discussions on the hottest topics in the industry, and connect with fellow programmers from around the world. Code Downloads Take advantage of free code samples from this book, as well as code samples from hundreds of other books, all ready to use.

Read More Find articles, ebooks, sample chapters, and tables of contents for hundreds of books, and more reference resources on programming topics that matter to you.

Wrox Professional guides are planned and written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. Focused and relevant, they address the issues technology professionals face every day. They provide examples, practical solutions, and expert education in new technologies, all designed to help programmers do a better job.

wPtd

Related Wrox BooksBeginning ASP.NET 4: in C# and VBISBN: 978-0-470-50221-1This introductory book offers helpful examples in a step-by-step format and has code examples written in both C# and Visual Basic. With this book you will gradually build a web site example that takes you through the processes of building basic ASP.NET web pages, adding features with pre-built server controls, designing consistent pages, displaying data, and more.

Beginning Microsoft Visual C# 2010ISBN: 978-0-470-50226-6Using this book, you will first cover the fundamentals such as variables, flow control, and object-oriented programming and gradually build your skills for web and Windows programming, Windows forms, and data access. Step-by-step directions walk you through processes and invite you to “Try it Out” at every stage. By the end, you’ll be able to write useful programming code following the steps you’ve learned in this thorough, practical book. If you’ve always wanted to master Visual C# programming, this book is the perfect one-stop resource.

Professional Visual Basic 2010 and .NET 4ISBN: 978-0-470-50224-2If you’ve already covered the basics and want to dive deep into VB and .NET topics that professional programmers use most, this is your guide. You’ll explore all the new features of Visual Basic 2010 as well as all the essential functions that you need, including .NET features such as LINQ to SQL, LINQ to XML, WCF, and more. Plus, you’ll examine exception handling and debugging, Visual Studio features, and ASP.NET web programming.

Professional C# 4 and .NET 4ISBN: 978-0-470-50225-9After a quick refresher on C# basics, the author dream team moves on to provide you with details of language and framework features including LINQ, LINQ to SQL, LINQ to XML, WCF, WPF, Workflow, and Generics. Coverage also spans ASP.NET programming with C#, working in Visual Studio 2010 with C#, and more. With this book, you’ll quickly get up to date on all the newest capabilities of C# 4.

Visual Studio 2010 and .NET 4 Six-in-OneISBN: 978-0-470-49948-1This comprehensive resource offers all you need to know to become productive with .NET 4. Experienced author and .NET guru Mitchel Sellers reviews all the important features of .NET 4, including .NET charting and ASP.NET charting, ASP.NET dynamic data and jQuery, and F#. The coverage is divided into six distinctive parts for easy navigation and offers a practical approach and complete examples.

Professional Visual Studio 2010ISBN: 978-0-470-54865-3Written by an author team of veteran programmers and developers, this book gets you quickly up to speed on what you can expect from Visual Studio 2010. Packed with helpful examples, this comprehensive guide examines the features of Visual Studio 2010 and walks you through every facet of the Integrated Development Environment (IDE), from common tasks and functions to its powerful tools.

WPF Programmer’s Reference: Windows Presentation Foundation with C# 2010 and .NET 4ISBN: 978-0-470-47722-9Written by a leading expert on Microsoft graphics programming, this richly illustrated book serves as an introduction to WPF development and explains fundamental WPF concepts. It is packed with helpful examples and progresses through a range of topics that gradually increase in their complexity.

Visual Basic 2010 Programmer’s ReferenceISBN: 978-0-470-49983-2Visual Basic 2010 Programmer’s Reference is a language tutorial and a reference guide to the 2010 release of Visual Basic. The tutorial provides basic material suitable for beginners but also includes in-depth content for more advanced developers.

Get more out of wrox.com

Programmer to Programmer™

InteractTake an active role online by participating in our P2P forums @ p2p.wrox.com

Wrox Online LibraryHundreds of our books are available online through Books24x7.com

Wrox Blox Download short informational pieces and code to keep you up to date and out of trouble!

Join the CommunitySign up for our free monthly newsletter at newsletter.wrox.com

BrowseReady for more Wrox? We have books and e-books available on .NET, SQL Server, Java, XML, Visual Basic, C#/ C++, and much more!

Contact Us. We always like to get feedback from our readers. Have a book idea? Need community support? Let us know by e-mailing [email protected]

PROFESSIONAL ASP.NET 4

INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxix

CHAPTER 1 Application and Page Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1

CHAPTER 2 ASP.NET Server Controls and Client-Side Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

CHAPTER 3 ASP.NET Web Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

CHAPTER 4 Validation Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

CHAPTER 5 Working with Master Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

CHAPTER 6 Themes and Skins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

CHAPTER 7 Data Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

CHAPTER 8 Data Management with ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309

CHAPTER 9 Querying with LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

CHAPTER 10 Working with XML and LINQ to XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .405

CHAPTER 11 Introduction to the Provider Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

CHAPTER 12 Extending the Provider Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491

CHAPTER 13 Site Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519

CHAPTER 14 Personalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .569

CHAPTER 15 Membership and Role Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597

CHAPTER 16 Portal Frameworks and Web Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .643

CHAPTER 17 HTML and CSS Design with ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .683

CHAPTER 18 ASP.NET AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .709

CHAPTER 19 ASP.NET AJAX Control Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749

CHAPTER 20 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .805

CHAPTER 21 State Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .835

CHAPTER 22 Caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .865

CHAPTER 23 Debugging and Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .895

CHAPTER 24 File I/O and Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927

CHAPTER 25 User and Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .979

CHAPTER 26 Modules and Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045

ffirs.indd iffirs.indd i 2/3/10 11:55:51 AM2/3/10 11:55:51 AM

CHAPTER 27 ASP.NET MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059

CHAPTER 28 Using Business Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081

CHAPTER 29 ADO.NET Entity Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105

CHAPTER 30 ASP.NET Dynamic Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129

CHAPTER 31 Working with Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153

CHAPTER 32 Building Global Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1217

CHAPTER 33 Confi guration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239

CHAPTER 34 Instrumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1285

CHAPTER 35 Administration and Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315

CHAPTER 36 Packaging and Deploying ASP.NET Applications . . . . . . . . . . . . . . . . . . . . . . . . . . 1337

APPENDIX A Migrating Older ASP.NET Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1369

APPENDIX B ASP.NET Ultimate Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1381

APPENDIX C Silverlight 3 and ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1399

APPENDIX D Dynamic Types and Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1419

APPENDIX E ASP.NET Online Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1427

INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1429

ffirs.indd iiffirs.indd ii 2/3/10 11:55:51 AM2/3/10 11:55:51 AM

PROFESSIONAL

ASP.NET 4

ffirs.indd iiiffirs.indd iii 2/3/10 11:55:52 AM2/3/10 11:55:52 AM

ffirs.indd ivffirs.indd iv 2/3/10 11:55:52 AM2/3/10 11:55:52 AM

PROFESSIONAL

ASP.NET 4

IN C# AND VB

Bill EvjenScott Hanselman

Devin Rader

ffirs.indd vffirs.indd v 2/3/10 11:55:52 AM2/3/10 11:55:52 AM

Professional ASP.NET 4: In C# and VB

Published byWiley Publishing, Inc.10475 Crosspoint BoulevardIndianapolis, IN 46256www.wiley.com

Copyright © 2010 by Wiley Publishing, Inc., Indianapolis, Indiana

Published simultaneously in Canada

ISBN: 978-0-470-50220-4

Manufactured in the United States of America

10 9 8 7 6 5 4 3 2 1

No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permissions.

Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifi cally disclaim all warranties, including without limitation warranties of fi tness for a particular purpose. No warranty may be created or extended by sales or promotional materials. The advice and strategies contained herein may not be suitable for every situation. This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services. If professional assistance is required, the services of a competent professional person should be sought. Neither the publisher nor the author shall be liable for damages arising herefrom. The fact that an organization or Web site is referred to in this work as a citation and/or a potential source of further information does not mean that the author or the publisher endorses the information the organization or Web site may provide or recommendations it may make. Further, readers should be aware that Internet Web sites listed in this work may have changed or disappeared between when this work was written and when it is read.

For general information on our other products and services please contact our Customer Care Department within the United States at (877) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002.

Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic books.

Library of Congress Control Number: 2009943645

Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Programmer to Programmer, and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affi liates, in the United States and other countries, and may not be used without written permission. All other trademarks are the property of their respective owners. Wiley Publishing, Inc., is not associated with any product or vendor mentioned in this book.

ffirs.indd viffirs.indd vi 2/3/10 11:55:53 AM2/3/10 11:55:53 AM

To Tuija, always.

—Bill Evjen

To Momo and the boys. Toot!

—Scott Hanselman

ffirs.indd viiffirs.indd vii 2/3/10 11:55:54 AM2/3/10 11:55:54 AM

ffirs.indd viiiffirs.indd viii 2/3/10 11:55:54 AM2/3/10 11:55:54 AM

ABOUT THE AUTHORS

BILL EVJEN is an active proponent of .NET technologies and community-based learning initiatives for .NET. He has been actively involved with .NET since the fi rst bits were released in 2000. In the same year, Bill founded the St. Louis .NET User Group (www.stlnet.org), one of the world’s fi rst such groups. Bill is also the founder and former executive director of the International .NET Association (www.ineta.org), which represents more than 500,000 members worldwide.

Based in St. Louis, Missouri, Bill is an acclaimed author and speaker on ASP.NET and Services. He has authored or coauthored more than 20 books including Professional C# 2010, Professional VB 2008, ASP.NET Professional Secrets, XML Web Services for ASP.NET, and Web Services Enhancements: Understanding the WSE for Enterprise Applications (all published by Wiley). In addition to writing, Bill is a speaker at numerous conferences, including DevConnections, VSLive!, and TechEd. Along with these items, Bill works closely with Microsoft as a Microsoft Regional Director and an MVP.

Bill is the Global Head of Platform Architecture for Thomson Reuters, Lipper, the international news and fi nancial services company (www.thomsonreuters.com). He graduated from Western Washington University in Bellingham, Washington, with a Russian language degree. When he isn’t tinkering on the computer, he can usually be found at his summer house in Toivakka, Finland. You can reach Bill on Twitter at @billevjen.

SCOTT HANSELMAN works for Microsoft as a Principal Program Manager Lead in the Server and Tools Online Group, aiming to spread the good word about developing software, most often on the Microsoft stack. Before this, Scott was the Chief Architect at Corillian, an eFinance enabler, for 6+ years, and before Corillian, he was a Principal Consultant at Microsoft Gold Partner for 7 years. He was also involved in a few things like the MVP and RD programs and will speak about computers (and other passions) whenever someone will listen to him. He blogs at www.hanselman.com, podcasts at www.hanselminutes.com, and

runs a team that contributes to www.asp.net, www.windowsclient.net, and www.silverlight.net. Follow Scott on Twitter @shanselman.

DEVIN RADER works at Infragistics where he focuses on delivering great experiences to developers using their controls. He’s done work on all of the .NET platforms, but most recently has been focused on Web technologies ASP.NET and Silverlight. As a co-founder of the St. Louis .NET User group and a former INETA board member, and a member of the Central New Jersey .NET user group, he’s an active supporter of the .NET developer community. He’s also co-author or technical editor of numerous books on .NET, including Wrox’s Silverlight 3 Programmer’s Reference. Follow Devin on Twitter @devinrader.

ffirs.indd ixffirs.indd ix 2/3/10 11:55:54 AM2/3/10 11:55:54 AM

ABOUT THE TECHNICAL EDITORS

CARLOS FIGUEROA has been developing and designing Web solutions for the last 8 years, participating in international projects for the pharmaceutical industry, banking, commercial air transportation, and the government. During these years, Carlos has been deeply involved as an early adopter of Microsoft Web development technologies, such as ASP.NET and Silverlight.

He has been awarded Microsoft Most Valuable Professional for the last 5 years and holds the MCAD certifi cation. Carlos is a Senior Software Developer at Oshyn, Inc. (www.oshyn.com), a company specialized on delivering innovative business solutions for the web, mobile devices and emerging technology platforms. At Oshyn, Carlos is dedicated to help some of the most recognizable brands in the world to achieve technology success. You can reach Carlos at [email protected] or follow him on twitter @carlosfigueroa.

ANDREW MOORE is a graduate of Purdue University–Calumet in Hammond, Indiana, and has been developing software since 1998 for radar systems, air traffi c management, discrete-event simulation, and business communications applications using C, C++, C#, and Java on the Windows, UNIX, and Linux platforms. Andrew is also a contributor to the Wrox Blox article series.

He is currently working as a Senior Software Engineer at Interactive Intelligence, Inc., in Indianapolis, Indiana, developing server-side applications for a multimedia unifi ed business communications platform. Andrew lives in Indiana with his wife Barbara and children Sophia and Andrew.

ffirs.indd xffirs.indd x 2/3/10 11:55:55 AM2/3/10 11:55:55 AM

CREDITS

ACQUISITIONS EDITOR

Paul Reese

SENIOR PROJECT EDITOR

Kevin Kent

TECHNICAL EDITORS

Carlos Figueroa

Andrew Moore

PRODUCTION EDITOR

Daniel Scribner

COPY EDITOR

Paula Lowell

EDITORIAL DIRECTOR

Robyn B. Siesky

EDITORIAL MANAGER

Mary Beth Wakefi eld

ASSOCIATE DIRECTOR OF MARKETING

David Mayhew

PRODUCTION MANAGER

Tim Tate

VICE PRESIDENT AND EXECUTIVE GROUP

PUBLISHER

Richard Swadley

VICE PRESIDENT AND EXECUTIVE PUBLISHER

Barry Pruett

ASSOCIATE PUBLISHER

Jim Minatel

PROJECT COORDINATOR, COVER

Lynsey Stanford

PROOFREADERS

Word One

INDEXER

J & J Indexing

COVER DESIGNER

Michael E. Trent

COVER IMAGE

© Jon Feingersh Photography Inc / Blend

Images / Jupiter Images

ffirs.indd xiffirs.indd xi 2/3/10 11:55:56 AM2/3/10 11:55:56 AM

ffirs.indd xiiffirs.indd xii 2/3/10 11:55:56 AM2/3/10 11:55:56 AM

ACKNOWLEDGMENTS

THANKS TO KEVIN KENT, PAUL REESE, AND JIM MINATEL for the opportunity to work on such a great book. In addition to my co-authors, I would like to thank my family for putting up with all the writing. Thank you Tuija, Sofi a, Henri, and Kalle!

—Bill Evjen

ffirs.indd xiiiffirs.indd xiii 2/3/10 11:55:56 AM2/3/10 11:55:56 AM

ffirs.indd xivffirs.indd xiv 2/3/10 11:55:56 AM2/3/10 11:55:56 AM

CONTENTS

INTRODUCTION xxxix

CHAPTER 1: APPLICATION AND PAGE FRAMEWORKS 1

Application Location Options 1

Built-in Web Server 2

IIS 3

FTP 3

Web Site Requiring FrontPage Extensions 4

The ASP.NET Page Structure Options 4

Inline Coding 6

Code-Behind Model 7

ASP.NET 4 Page Directives 9

@Page 10

@Master 13

@Control 14

@Import 15

@Implements 17

@Register 17

@Assembly 18

@PreviousPageType 18

@MasterType 18

@OutputCache 18

@Reference 19

ASP.NET Page Events 19

Dealing with Postbacks 20

Cross-Page Posting 21

ASP.NET Application Folders 26

App_Code Folder 27

App_Data Folder 30

App_Themes Folder 31

App_GlobalResources Folder 31

App_LocalResources Folder 31

App_WebReferences Folder 31

App_Browsers Folder 31

Compilation 32

Build Providers 35

ftoc.indd xvftoc.indd xv 2/3/10 9:02:03 PM2/3/10 9:02:03 PM

xvi

CONTENTS

Using the Built-in Build Providers 36

Using Your Own Build Providers 36

Global.asax 41

Working with Classes Through Visual Studio 2010 44

Summary 47

CHAPTER 2: ASP.NET SERVER CONTROLS AND CLIENT-SIDE SCRIPTS 49

ASP.NET Server Controls 49

Types of Server Controls 50

Building with Server Controls 51

Working with Server Control Events 53

Applying Styles to Server Controls 54

Examining the Controls’ Common Properties 54

Changing Styles Using Cascading Style Sheets 56

CSS Changes in ASP.NET 4 58

HTML Server Controls 59

Looking at the HtmlControl Base Class 60

Looking at the HtmlContainerControl Class 61

Looking at All the HTML Classes 61

Using the HtmlGenericControl Class 62

Identifying ASP.NET Server Controls 63

Manipulating Pages and Server Controls with JavaScript 65

Using Page.ClientScript.RegisterClientScriptBlock 66

Using Page.ClientScript.RegisterStartupScript 68

Using Page.ClientScript.RegisterClientScriptInclude 69

Client-Side Callback 69

Comparing a Typical Postback to a Callback 70

Using the Callback Feature — A Simple Approach 72

Using the Callback Feature with a Single Parameter 75

Using the Callback Feature — A More Complex Example 78

Summary 83

CHAPTER 3: ASP.NET WEB SERVER CONTROLS 85

An Overview of Web Server Controls 85

The Label Server Control 86

The Literal Server Control 88

The TextBox Server Control 88

Using the Focus() Method 89

Using AutoPostBack 89

Using AutoCompleteType 90

ftoc.indd xviftoc.indd xvi 2/3/10 9:02:04 PM2/3/10 9:02:04 PM

xvii

CONTENTS

The Button Server Control 91

The CausesValidation Property 91

The CommandName Property 92

Buttons That Work with Client-Side JavaScript 93

The LinkButton Server Control 94

The ImageButton Server Control 95

The HyperLink Server Control 96

The DropDownList Server Control 96

Visually Removing Items from a Collection 98

The ListBox Server Control 100

Allowing Users to Select Multiple Items 100

An Example of Using the ListBox Control 100

Adding Items to a Collection 102

The CheckBox Server Control 102

How to Determine Whether Check Boxes Are Checked 103

Assigning a Value to a Check Box 104

Aligning Text Around the Check Box 104

The CheckBoxList Server Control 104

The RadioButton Server Control 106

The RadioButtonList Server Control 108

Image Server Control 109

Table Server Control 110

The Calendar Server Control 112

Making a Date Selection from the Calendar Control 112

Choosing a Date Format to Output from the Calendar 113

Making Day, Week, or Month Selections 114

Working with Date Ranges 115

Modifying the Style and Behavior of Your Calendar 116

AdRotator Server Control 119

The Xml Server Control 121

Panel Server Control 122

The PlaceHolder Server Control 124

BulletedList Server Control 124

HiddenField Server Control 129

FileUpload Server Control 130

Uploading Files Using the FileUpload Control 130

Giving ASP.NET Proper Permissions to Upload Files 132

Understanding File Size Limitations 133

Uploading Multiple Files from the Same Page 134

Placing the Uploaded File into a Stream Object 137

Moving File Contents from a Stream Object to a Byte Array 137

ftoc.indd xviiftoc.indd xvii 2/3/10 9:02:05 PM2/3/10 9:02:05 PM

xviii

CONTENTS

MultiView and View Server Controls 138

Wizard Server Control 141

Customizing the Side Navigation 142

Examining the AllowReturn Attribute 143

Working with the StepType Attribute 143

Adding a Header to the Wizard Control 143

Working with the Wizard’s Navigation System 144

Utilizing Wizard Control Events 145

Using the Wizard Control to Show Form Elements 146

ImageMap Server Control 150

Chart Server Control 152

Summary 155

CHAPTER 4: VALIDATION SERVER CONTROLS 157

Understanding Validation 157

Client-Side versus Server-Side Validation 158

ASP.NET Validation Server Controls 159

Validation Causes 160

The RequiredFieldValidator Server Control 160

The CompareValidator Server Control 164

The RangeValidator Server Control 167

The RegularExpressionValidator Server Control 171

The CustomValidator Server Control 172

The ValidationSummary Server Control 176

Turning Off Client-Side Validation 179

Using Images and Sounds for Error Notifi cations 180

Working with Validation Groups 181

Summary 185

CHAPTER 5: WORKING WITH MASTER PAGES 187

Why Do You Need Master Pages? 187

The Basics of Master Pages 189

Coding a Master Page 190

Coding a Content Page 192

Mixing Page Types and Languages 196

Specifying Which Master Page to Use 197

Working with the Page Title 198

Working with Controls and Properties from the Master Page 199

Specifying Default Content in the Master Page 205

Programmatically Assigning the Master Page 207

ftoc.indd xviiiftoc.indd xviii 2/3/10 9:02:05 PM2/3/10 9:02:05 PM

xix

CONTENTS

Nesting Master Pages 207

Container-Specifi c Master Pages 211

Event Ordering 212

Caching with Master Pages 213

ASP.NET AJAX and Master Pages 214

Summary 216

CHAPTER 6: THEMES AND SKINS 217

Using ASP.NET Themes 217

Applying a Theme to a Single ASP.NET Page 217

Applying a Theme to an Entire Application 219

Removing Themes from Server Controls 219

Removing Themes from Web Pages 220

Understanding Themes When Using Master Pages 221

Understanding the StyleSheetTheme Attribute 221

Creating Your Own Themes 222

Creating the Proper Folder Structure 222

Creating a Skin 222

Including CSS Files in Your Themes 224

Having Your Themes Include Images 227

Defi ning Multiple Skin Options 229

Programmatically Working with Themes 231

Assigning the Page’s Theme Programmatically 231

Assigning a Control’s SkinID Programmatically 231

Themes, Skins, and Custom Controls 232

Summary 235

CHAPTER 7: DATA BINDING 237

Data Source Controls 237

SqlDataSource Control 239

AccessDataSource Control 247

LinqDataSource Control 247

EntityDataSource Control 253

XmlDataSource Control 255

ObjectDataSource Control 256

SiteMapDataSource Control 259

Data Source Control Caching 259

Storing Connection Information 260

Using Bound List Controls with Data Source Controls 262

GridView 262

ftoc.indd xixftoc.indd xix 2/3/10 9:02:05 PM2/3/10 9:02:05 PM

xx

CONTENTS

Editing GridView Row Data 275

Deleting GridView Data 281

Other GridView Formatting Features 283

DetailsView 283

Inserting, Updating, and Deleting Data Using DetailsView 287

ListView 289

FormView 296

Other Databound Controls 300

TreeView 300

AdRotator 301

Menu 301

Inline Data-Binding Syntax 302

Data-Binding Syntax 302

XML Data Binding 303

Expressions and Expression Builders 303

Summary 308

CHAPTER 8: DATA MANAGEMENT WITH ADO.NET 309

Basic ADO.NET Features 310

Common ADO.NET Tasks 310

Basic ADO.NET Namespaces and Classes 314

Using the Connection Object 315

Using the Command Object 317

Using the DataReader Object 318

Using DataAdapter 320

Using Parameters 322

Understanding DataSet and DataTable 325

Using Oracle as Your Database with ASP.NET 329

The DataList Server Control 330

Looking at the Available Templates 331

Working with ItemTemplate 331

Working with Other Layout Templates 334

Working with Multiple Columns 336

The ListView Server Control 336

Connecting the ListView to a Database 337

Creating the Layout Template 338

Creating the ItemTemplate 340

Creating the EditItemTemplate 341

Creating the EmptyItemTemplate 341

Creating the InsertItemTemplate 341

Viewing the Results 342

ftoc.indd xxftoc.indd xx 2/3/10 9:02:05 PM2/3/10 9:02:05 PM

xxi

CONTENTS

Using Visual Studio for ADO.NET Tasks 344

Creating a Connection to the Data Source 344

Working with a Dataset Designer 345

Using the CustomerOrders DataSet 348

Asynchronous Command Execution 352

Asynchronous Methods of the SqlCommand Class 352

IAsyncResult Interface 353

AsyncCallback 354

WaitHandle Class 354

Approaches of Asynchronous Processing in ADO.NET 355

Canceling Asynchronous Processing 370

Asynchronous Connections 370

Summary 370

CHAPTER 9: QUERYING WITH LINQ 371

LINQ to Objects 371

Understanding Traditional Query Methods 371

Replacing Traditional Queries with LINQ 378

Data Grouping 384

Using Other LINQ Operators 385

Making LINQ Joins 385

Paging Using LINQ 386

LINQ to XML 387

Joining XML Data 390

LINQ to SQL 391

Making Insert, Update, and Delete Queries through LINQ 399

Extending LINQ 403

Summary 403

CHAPTER 10: WORKING WITH XML AND LINQ TO XML 405

The Basics of XML 406

The XML InfoSet 408

XSD–XML Schema Defi nition 409

Editing XML and XML Schema in Visual Studio 2010 410

XmlReader and XmlWriter 413

Using XDocument Rather Than XmlReader 415

Using Schema with XmlTextReader 416

Validating Against a Schema Using an XDocument 417

Including NameTable Optimization 419

Retrieving .NET CLR Types from XML 420

ftoc.indd xxiftoc.indd xxi 2/3/10 9:02:05 PM2/3/10 9:02:05 PM

xxii

CONTENTS

ReadSubtree and XmlSerialization 422

Creating CLR Objects from XML with LINQ to XML 423

Creating XML with XmlWriter 424

Creating XML with LINQ for XML 426

Improvements for XmlReader and XmlWriter 429

XmlDocument and XPathDocument 429

Problems with the DOM 429

XPath, the XPathDocument, and XmlDocument 430

DataSets 434

Persisting DataSets to XML 434

XmlDataDocument 435

The XmlDataSource Control 437

XSLT 441

XslCompiledTransform 442

XSLT Debugging 445

Databases and XML 446

FOR XML AUTO 446

SQL Server and the XML Data Type 451

Summary 456

CHAPTER 11: INTRODUCTION TO THE PROVIDER MODEL 457

Understanding the Provider 458

The Provider Model in ASP.NET 4 459

Setting Up Your Provider to Work with Microsoft SQL Server

7.0, 2000, 2005, or 2008 461

Membership Providers 466

Role Providers 469

The Personalization Provider 473

The SiteMap Provider 474

SessionState Providers 476

Web Event Providers 478

Confi guration Providers 485

The Web Parts Provider 487

Confi guring Providers 489

Summary 489

CHAPTER 12: EXTENDING THE PROVIDER MODEL 491

Providers Are One Tier in a Larger Architecture 491

Modifying Through Attribute-Based Programming 492

Simpler Password Structures Through the SqlMembershipProvider 492

Stronger Password Structures Through the SqlMembershipProvider 495

ftoc.indd xxiiftoc.indd xxii 2/3/10 9:02:06 PM2/3/10 9:02:06 PM

xxiii

CONTENTS

Examining ProviderBase 496

Building Your Own Providers 497

Creating the CustomProviders Application 498

Constructing the Class Skeleton Required 499

Creating the XML User Data Store 502

Defi ning the Provider Instance in the web.confi g File 502

Not Implementing Methods and Properties of the

MembershipProvider Class 503

Implementing Methods and Properties of

the MembershipProvider Class 504

Using the XmlMembershipProvider for User Login 510

Extending Pre-Existing Providers 511

Limiting Role Capabilities with a New LimitedSqlRoleProvider Provider 511

Using the New LimitedSqlRoleProvider Provider 515

Summary 518

CHAPTER 13: SITE NAVIGATION 519

XML-Based Sitemaps 520

SiteMapPath Server Control 521

The PathSeparator Property 523

The PathDirection Property 525

The ParentLevelsDisplayed Property 525

The ShowToolTips Property 526

The SiteMapPath Control’s Child Elements 526

TreeView Server Control 527

Identifying the TreeView Control’s Built-In Styles 530

Examining the Parts of the TreeView Control 531

Binding the TreeView Control to an XML File 532

Selecting Multiple Options in a TreeView 534

Specifying Custom Icons in the TreeView Control 537

Specifying Lines Used to Connect Nodes 538

Working with the TreeView Control Programmatically 540

Menu Server Control 545

Applying Diff erent Styles to the Menu Control 546

Using Menu Events 550

Binding the Menu Control to an XML File 551

SiteMap Data Provider 552

ShowStartingNode 552

StartFromCurrentNode 553

StartingNodeOff set 554

StartingNodeUrl 555

SiteMap API 555

ftoc.indd xxiiiftoc.indd xxiii 2/3/10 9:02:06 PM2/3/10 9:02:06 PM

xxiv

CONTENTS

URL Mapping 557

Sitemap Localization 558

Structuring the Web.sitemap File for Localization 558

Making Modifi cations to the Web.confi g File 559

Creating Assembly Resource (.resx) Files 560

Testing the Results 561

Security Trimming 561

Setting Up Role Management for Administrators 562

Setting Up the Administrators’ Section 563

Enabling Security Trimming 564

Nesting SiteMap Files 566

Summary 567

CHAPTER 14: PERSONALIZATION 569

The Personalization Model 570

Creating Personalization Properties 570

Adding a Simple Personalization Property 570

Using Personalization Properties 571

Adding a Group of Personalization Properties 574

Using Grouped Personalization Properties 575

Defi ning Types for Personalization Properties 576

Using Custom Types 576

Providing Default Values 579

Making Personalization Properties Read-Only 579

Anonymous Personalization 579

Enabling Anonymous Identifi cation of the End User 579

Working with Anonymous Identifi cation 582

Anonymous Options for Personalization Properties 583

Warnings about Anonymous User Profi le Storage 583

Programmatic Access to Personalization 584

Migrating Anonymous Users 584

Personalizing Profi les 585

Determining Whether to Continue with Automatic Saves 586

Personalization Providers 587

Working with SQL Server Express Edition 587

Working with Microsoft’s SQL Server 7.0/2000/2005/2008 588

Using Multiple Providers 590

Managing Application Profi les 590

Properties of the Profi leManager Class 591

Methods of the Profi leManager Class 591

Building the Profi leManager.aspx Page 592

ftoc.indd xxivftoc.indd xxiv 2/3/10 9:02:06 PM2/3/10 9:02:06 PM

xxv

CONTENTS

Examining the Profi leManager.aspx Page’s Code 594

Running the Profi leManager.aspx Page 595

Summary 596

CHAPTER 15: MEMBERSHIP AND ROLE MANAGEMENT 597

ASP.NET 4 Authentication 598

Setting Up Your Web Site for Membership 598

Adding Users 600

Asking for Credentials 613

Working with Authenticated Users 620

Showing the Number of Users Online 622

Dealing with Passwords 623

ASP.NET 4 Authorization 627

Using the LoginView Server Control 627

Setting Up Your Web Site for Role Management 630

Adding and Retrieving Application Roles 632

Deleting Roles 634

Adding Users to Roles 635

Getting All the Users of a Particular Role 635

Getting All the Roles of a Particular User 637

Removing Users from Roles 638

Checking Users in Roles 638

Understanding How Roles Are Cached 639

Using the Web Site Administration Tool 640

Public Methods of the Membership API 640

Public Methods of the Roles API 641

Summary 642

CHAPTER 16: PORTAL FRAMEWORKS AND WEB PARTS 643

Introducing Web Parts 643

Building Dynamic and Modular Web Sites 645

Introducing the WebPartManager Control 645

Working with Zone Layouts 646

Understanding the WebPartZone Control 649

Allowing the User to Change the Mode of the Page 651

Modifying Zones 660

Working with Classes in the Portal Framework 666

Creating Custom Web Parts 669

Connecting Web Parts 674

Building the Provider Web Part 675

ftoc.indd xxvftoc.indd xxv 2/3/10 9:02:06 PM2/3/10 9:02:06 PM

xxvi

CONTENTS

Building the Consumer Web Part 677

Connecting Web Parts on an ASP.NET Page 679

Understanding the Diffi culties in Dealing with Master Pages

When Connecting Web Parts 681

Summary 682

CHAPTER 17: HTML AND CSS DESIGN WITH ASP.NET 683

Caveats 684

HTML and CSS Overview 684

Creating Style Sheets 685

CSS Rules 687

CSS Inheritance 694

Element Layout and Positioning 695

Working with HTML and CSS in Visual Studio 702

Working with CSS in Visual Studio 703

Managing Relative CSS Links in Master Pages 706

Styling ASP.NET Controls 706

Summary 708

CHAPTER 18: ASP.NET AJAX 709

Understanding the Need for AJAX 709

Before AJAX 710

AJAX Changes the Story 710

ASP.NET AJAX and Visual Studio 2010 712

Client-Side Technologies 713

Server-Side Technologies 714

Developing with ASP.NET AJAX 714

Building ASP.NET AJAX Applications 714

Building a Simple ASP.NET Page without AJAX 716

Building a Simple ASP.NET Page with AJAX 718

ASP.NET AJAX’s Server-Side Controls 722

The ScriptManager Control 723

The ScriptManagerProxy Control 725

The Timer Control 726

The UpdatePanel Control 727

The UpdateProgress Control 731

Using Multiple UpdatePanel Controls 733

Working with Page History 737

Script Combining 741

Summary 745

ftoc.indd xxviftoc.indd xxvi 2/3/10 9:02:07 PM2/3/10 9:02:07 PM

xxvii

CONTENTS

CHAPTER 19: ASP.NET AJAX CONTROL TOOLKIT 747

Downloading and Installing the AJAX Control Toolkit 749

The ASP.NET AJAX Controls 750

ASP.NET AJAX Control Toolkit Extenders 751

AlwaysVisibleControlExtender 751

AnimationExtender 753

AutoCompleteExtender 755

CalendarExtender 757

CollapsiblePanelExtender 758

ColorPickerExtender 760

Confi rmButtonExtender and ModalPopupExtender 761

DragPanelExtender 763

DropDownExtender 764

DropShadowExtender 766

DynamicPopulateExtender 768

FilteredTextBoxExtender 772

HoverMenuExtender 772

ListSearchExtender 774

MaskedEditExtender and MaskedEditValidator 774

MutuallyExclusiveCheckBoxExtender 776

NumericUpDownExtender 778

PagingBulletedListExtender 778

PopupControlExtender 780

ResizableControlExtender 781

RoundedCornersExtender 783

SliderExtender and MultiHandleSliderExtender 784

SlideShowExtender 785

TextBoxWatermarkExtender 788

ToggleButtonExtender 789

UpdatePanelAnimationExtender 790

ValidatorCalloutExtender 791

ASP.NET AJAX Control Toolkit Server Controls 793

Accordion Control 793

CascadingDropDown 795

NoBot Control 798

PasswordStrength Control 799

Rating Control 800

TabContainer Control 801

Summary 803

ftoc.indd xxviiftoc.indd xxvii 2/3/10 9:02:07 PM2/3/10 9:02:07 PM

xxviii

CONTENTS

CHAPTER 20: SECURITY 805

Applying Authentication Measures 806

The <authentication> Node 806

Windows-Based Authentication 807

Forms-Based Authentication 813

Passport Authentication 821

Authenticating Specifi c Files and Folders 822

Programmatic Authorization 822

Working with User.Identity 823

Working with User.IsInRole() 824

Pulling More Information with WindowsIdentity 824

Identity and Impersonation 827

Securing Through IIS 828

IP Address and Domain Name Restrictions 829

Working with File Extensions 829

Using the ASP.NET MMC Snap-In 832

Using the IIS 7.0 Manager 832

Summary 833

CHAPTER 21: STATE MANAGEMENT 835

Your Session State Choices 835

Understanding the Session Object in ASP.NET 838

Sessions and the Event Model 838

Confi guring Session State Management 839

In-Process Session State 840

Out-of-Process Session State 846

SQL-Backed Session State 851

Extending Session State with Other Providers 854

Cookieless Session State 855

Choosing the Correct Way to Maintain State 856

The Application Object 856

QueryStrings 857

Cookies 857

PostBacks and Cross-Page PostBacks 857

Hidden Fields, ViewState, and ControlState 859

Using HttpContext.Current.Items for Very Short-Term Storage 863

Summary 864

ftoc.indd xxviiiftoc.indd xxviii 2/3/10 9:02:07 PM2/3/10 9:02:07 PM