CYAN MAGENTA YELLOW BLACK PANTONE 123 C BOOKS FOR PROFESSIONALS BY PROFESSIONALS ® Beginning ASP.NET in C# 2010 Dear Reader, Pro ASP.NET in C# 2010 Pro Silverlight in C# Pro WPF in C# 2010 ASP.NET: The Complete Reference Welcome aboard! Matthew MacDonald (Microsoft MVP, MCSD) THE APRESS ROADMAP Companion eBook Beginning ASP.NET in C# 2010 See last page for details on $10 eBook version Pro ASP.NET in C# 2010 Pro ASP.NET MVC Framework Pro C# 2010 and the NET Platform Pro ASP.NET CMS www.apress.com ISBN 978-1-4302-2608-6 49 9 US $49.99 Beginning MacDonald SOURCE CODE ONLINE Companion eBook Available ASP.NET in C# 2010 Matthew MacDonald, Author of 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 navigation, data binding, themes, and user management ASP.NET allows you to create 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 THE EXPERT’S VOICE ® IN NET Beginning ASP.NET in C# 2010 Start your journey with the fundamentals of building ASP.NET websites Matthew MacDonald Shelve in: Programming Languages / C# User level: Beginning–Intermediate 781430 226086 www.it-ebooks.info this print for content only—size & color not accurate spine = 1.90625" 1016 page count www.it-ebooks.info Beginning ASP.NET in C# 2010 ■■■ Matthew MacDonald www.it-ebooks.info 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 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 ordersny@springer-sbm.com, or visit www.springeronline.com For information on translations, please e-mail rights@apress.com, 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 www.it-ebooks.info For my wonderful family, Faria, Maya, and Brenna www.it-ebooks.info www.it-ebooks.info ■ CONTENTS Contents About the Author xxv About the Technical Reviewer xxvi Acknowledgments xxvii Introduction xxviii Part 1: Introducing NET ■ Chapter 1: The NET Framework The Evolution of Web Development HTML and HTML Forms Server-Side Programming 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 v www.it-ebooks.info ■ CONTENTS 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 vi www.it-ebooks.info ■ CONTENTS 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 vii www.it-ebooks.info ■ CONTENTS 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 viii www.it-ebooks.info ■ INDEX editing with GridView template, 568–572 editing with validation, 570–571 editing without command column, 571–572 handling events in GridView template, 567–568 multiple templates, 565–566 overview, 563–564 Menu control, 445–448 Menu/TreeView controls compared, 443 multiple templates, GridView control, 565–566 single-value data binding, 506 SiteMapPath control, 432–434 templates not supported by navigation controls, 435 UpdatePanel control, 836 Wizard control, 340 test certificates, 893 TestEmployee( ) method, 798 testing caching test, 776–777 component-based programming, 736 disabling caching while testing, 769 testing new NET classes, 60–63 text box, HTML, 173 text files, reading and writing with streams, 594–604 Text property, 184, 192, 239, 300, 445, 502 text type, input element currency converter example, 138 HTML server control class for, 136 related web control classes, 174 textarea element, HTML HTML server control class for, 136 related web control classes, 174 TextBox class, 725 TextBox control AccessKey property, 183 aspx code creating, 191 Bind method, 569 consolidating HTML text box elements, 173 events and postbacks, 195 how validation works, 297 properties, 175 underlying HTML element, 174 using AutoCompleteExtender control, 857 TextBoxStyle property, Login control, 691 TextBoxWatermarkExtender, 862 TextChanged event capturing change event immediately, 195 TextBox class, 725 web controls, 194–195 TextMode property, TextBox control class, 175 th element, HTML HTML server control class for, 136 related web control class, 175 Thawte certificate authority, 892 Theme attribute, Page directive applying themes, 385 handling control/theme conflicts, 387–388 Theme property, Page class, 391 themes App_Themes directory, 130 applying themes, 385–386 applying themes dynamically, 391 applying to entire website, 388 configuring control properties, 383 control tags in skin file, 389–390 creating multiple skins for same control, 388–389 default themes, 386 description, 367 global themes, 384 handling control/theme conflicts, 386–387 images as part of theme, 390–391 local themes, 384 skins and, 384 styles and, 367, 383 thin clients, reasons to avoid client-side programming, third-party languages and NET, 17 this keyword recalling names of controls, 114 single-value data binding, 502 variable watch windows, 124 thread-safety, data caching, 774 three-tier design, 736–737 throw statement , throwing exceptions, 224 throwing exceptions, 224–228 Ticket property, FormsIdentity class, 661 ticks, description, 22 969 www.it-ebooks.info ■ INDEX time progress notification using Ajax, 845 refreshing time with partial update, 834–837 time data types, format strings, 547 timed refreshes using Ajax, 849–850 timeout attribute forms authentication settings, 651 sessionState tag, 281 Timeout property, HttpSessionState class, 274 timeout setting session state configuration, 281 Timer control Ajax, 849–850 Enabled property, 850 Interval property, 849 partial rendering, 850 triggers, 850 TimeSpan class arithmetic operators, 34 nature and behavior of data types, 66 proprties and methods, 35 TimeSpan data type, NET, 22 TimeSpan type/class, 34–36 timestamps, concurrency checking, 537 Title attribute, Page directive, 397 title element, HTML, 137 Title property, 334 TitleFormat property, 322 TitleStyle property, 318 TitleText property, 692 TitleTextStyle property, 691 To Lower method, 33 To Upper( ) method, 33 Today property, DateTime class, 35 TodayDayStyle property, 318 TodaysDate property, 319, 322 ToggleButtonExtender, 862 ToList( ) method, 811, 818 Toolbox adding ASP.NET AJAX Control Toolkit, 852 stopping Toolbox hiding itself, 96 ToolTip property, WebControl class, 178 tooltips, Visual Studio, 114 TOP clause, 462 _top frame target, AdRotator control, 325 ToString( ) method DateTime class, 35 event handlers, 140 object-based manipulation, 31 TimeSpan class, 36 TotalFreeSpace property, DriveInfo class, 589 TotalSize property, DriveInfo class, 589 TotalXyz properties, TimeSpan class, 35 ToUpper( ) method, String class, 32 tr element HTML, 136, 175 XHTML, 107 Trace class, 250 trace information page tracing, 243 writing trace information, 246–250 Trace object enabling page tracing, 240 Warn method, 247 Write method, 247 TraceMode attribute application-level tracing, 250 Page directive, 249 TraceMode property, Trace class, 250 tracing, 250 See also page tracing TransactionCount variable, Page class, 501–502 Transfer method HttpServerUtility class, 158 Server class, 428 Transform method, XslCompiledTransform class, 640 transformations, XSLT (XSL Transformations), 640–643 TransitionDuration property, Accordion control, 856 TreeNodeDataBound event, 435 TreeNodeStyle class, 438 TreeView control applying styles to node levels, 441–442 applying styles to node types, 440–441 Auto Format feature, 442 binding master page to site map, 419 binding navigational controls, 422 choosing predefined set of node icons, 436 compared to Menu control, 443 description, 417 970 www.it-ebooks.info ■ INDEX different looks for tree views, 437 ImageSet property, 436, 438 LevelStyles collection, 441 MaxDataBindDepth property, 424 NodeIndent property, 436, 438–439 NodeStyle property, 440 overview, 435 properties, 436–438 style properties, 440 styles, 438–442 table-based layouts for master pages, 408 Visible property, 409–410 TreeViewImageSet enumeration, 436 triggers controlling partial refreshes with, 840–845 Timer control, 850 Trim( ) method, String class, 32–33 TrimEnd( ) method, String class, 33 TrimStart( ) method, String class, 33 troubleshooting component-based programming, 736 Entity Framework, 810–812 try catch finally blocks catch block, 219 catching specific exceptions, 219–220 creating list of files in directory, 586 data retrieval using ADO.NET, 479 database connections, 469 finally block, 219 nested exception handlers, 221 no active exception handler exists, 222 structured exception handling, 219 testing database connections, 473 testing occurence of exceptions, 224 tips for exception handling, 224 using statements as alternative, 474 TryParse method error handling, 144 Int32 class, 311 type attribute configuring membership provider, 677 HTML input element, 133 profile properties, 717 type conversions narrowing conversions, 29–30 overview, 29 widening conversions, 29 Type property, HtmlInputControl class, 156 TypeConverter class, 208 TypeName property, ObjectDataSource control, 760 types NET types, 65–66 reference types, 63–66 value types, 63–66 ■U u element, XHTML, 106, 108 ul element HTML, 175 XHTML, 106 Underline property, FontInfo class, 181 underlined element, XHTML, 106 unhandled application error, 162 Unit type, 179 UnitType enumeration, 179 Universal Resource Identifiers (URIs), 632 Universal Resource Locators See URLs (Universal Resource Locators) Unload event, Page class, 198, 259, 710 Unlock( ) method, 287 UnlockUser method, MembershipUser class, 684, 687 unordered list element, XHTML, 106 Update method SqlDataSource class, 558 stateful Account class example, 748 UpdatePanel control, 840 Update( ) method, Wizard control, 338 Update Model From Database context menu item, 806 UPDATE statement, 463–464, 481, 488 Update Wizard dialog box, 806–807 UpdateCommand property, SqlDataSource class, 525, 533–534 UpdateCommandType property, SqlDataSource class, 525 Updated/Updating events page life cycle, 523 SqlDataSource control, 532–533 UpdateFailedException class, 217 UpdateMethod property, 760 UpdateMode property, 839 UpdatePanel control browser not supporting Ajax, 834 971 www.it-ebooks.info ■ INDEX UpdatePanel control (continued) conditional updates, 839–840 ContentTemplate element, 836 controlling refreshes with triggers, 840–845 controls that can' t be used in, 839 dynamically adding controls to, 836 error handling, 837–839 inheritance, 835 linking UpdateProgress control to, 847 refreshing label with partial update, 834–837 rendering HTML, 836 response time and bandwidth used, 837 style setting support, 835 Update method, 840 UpdateMode property, 839 updates interrupting updates, 840 updates with multiple UpdatePanel controls, 839–840 use of templates, 836 visibility of, 835 UpdatePanelAnimationExtender, 862 UpdateParameters collection, SqlDataSource class, 534, 558 UpdateProgress control AssociatedUpdatePanelID property, 847 cancel button, 847–849 linking to UpdatePanel control, 847 simulated progress bar, 845–847 UpdateProgress control, Ajax, 845–849 updates, 820–822 UpdateUser method, Membership class, 682–683, 687 updating data models, 806–807 records, data source controls, 533–537 uploading files See file uploads uploads allowing file uploads, 604–607 FileUpload control, 604 maximum size of file uploads, 607 URIs (Universal Resource Identifiers), 632 URL encoding, 269 UrlDecode method, HttpServerUtility class, 160, 269 UrlEncode method, HttpServerUtility class, 160, 269 urlMappings section, web.config file, 428 URLs (Universal Resource Locators) case sensitivity of in site map, 416 duplicate, site map nodes with, 415 friendly, 428 GetRedirectUrl method, 658 loopback alias, 868 mapping, 428 munged, 278 query strings transferring information in, 160, 265–269 session tracking, 273 special characters in URLs, 269 UseCookies value, HttpCookieMode enumeration, 278 UseDeviceProfile value, HttpCookieMode enumeration, 278 user authentication, Page class, 157 User class, 661, 666, 705 user controls ASP.NET file type describing, 128 creating, 344–346 independent user controls, 347–349 integrated user controls, 349–352 introduction, 343 passing information with events, 354–356 requesting, 343 user control events, 352–354 web forms compared, 343 user input errors requiring validation, 293 validating input, 293 user instance connections data access, ADO.NET, 471–472 SQL Server, 472 User Instances property, connection strings, 471 user interface problems with single-value data binding, 505 three-tier design, 736 web controls, benefits of, 173 User property, Page class, 157, 660 user record management, membership data store, 669–687 User role, default Windows roles, 665 UserControl class, 343–344, 350 UserName property Login control, 690 ProfileInfo class, 726 972 www.it-ebooks.info ■ INDEX UserNameLabelText property, 692 UsernameRequiredErrorMessage property, 692 users aspnet_Users table, 715 assigning roles using WAT, 702 authorization rules controlling access, 654–655 creating with CreateUserWizard, 694–698 creating with Membership class, 681–682 creating with WAT, 679–681 displaying full list of in web page, 728 examining user' s group membership, 664 multiple authorization rules for, 652 registering new users with Login control, 691 restricting access based on roles, 705 restricting anonymous user access, 651 using files with web applications, 579 UserType enumeration, 27 UseUri value, HttpCookieMode enumeration, 278 using statements closing database connections, 474–475 code-behind class, 139 using statements, importing namespaces, 69 UTC (coordinated universal time) property, DateTime class, 35 ■V Validate method, Page class, 302 ValidateEmptyText property, 313 ValidateUser method, Membership class, 683, 686 validation automatic validation, 295 CausesValidation property, 295 client-side validation, 295 configuring level of error checking, 116 controls BaseValidator class, 295 CompareValidator control, 294 ControlToValidate property, 296, 304 CustomValidator control, 294 description, 293 Display property, 296, 299 EnableClientScript property, 296, 302 Enabled property, 296 ErrorMessage property, 296, 303 ForeColor property, 296 hiding error messages, 296, 299 indicating invalid input to user, 300 IsValid property, 296 RangeValidator control, 294 RegularExpressionValidator control, 294, 304–308 RequiredFieldValidator control, 294 using multiple validation controls, 294 validated web form example, 308–313 validation groups, 313–314 ValidationGroup property, 313 ValidationSummary control, 294, 299–302 displaying all error messages for page, 299 editing GridView templates with validation, 570–571 how validation works, 297–299 KeyPress event, 294 manual validation, 302–304 replacing custom validation with regular expressions, 311 security cookie, 651 server-side, 295 using regular expressions, 304–308 validated web forms, 308–313 validation groups, 313–314 web applications, 293 XML, 632–639 ValidationEventArgs class, 639 ValidationEventHandler event, XmlReaderSettings class, 639 ValidationGroup property, 313 ValidationSummary control description, 294 DisplayMode property, 301 ForeColor property, 301 HeaderText property, 301 indicating invalid input to user, 299–301 overview, 299 ShowMessageBox property, 301 ShowSummary property, 301 ValidationType property, XmlReaderSettings class, 637 973 www.it-ebooks.info ■ INDEX ValidatorCalloutExtender, 862 validators controls See also validation, controls classes, 294 Login control, 688 Text property, 300 description, 293 validation groups, 313 ValidatorTextStyle property, 691 value attribute, HTML select element, 147 value keyword, 55 Value property HtmlInputControl class, 156 ListItem control, 184 value types assignment operations, 63 data types behaving as, 66 equality testing, 64 passing parameters by value, 64 structures, 66 value-of command element, XSL Transformations, 641 values, enumerations, 26–27 var keyword, 794–796 indicating data type, 23 streamlined object creation, 70 variables arrays, 24–26 block-level scope, 41 C#, 20 casting object variables, 74–76 data type prefixes, 22 delegate variables, 47–48 initialization and assignment, 22–24 operations advanced math, 29 arithmetic operators, 28 overview, 27 type conversions, 29–31 streamlined object creation, 70 tracking variables, 124 watch windows, Visual Studio debugging, 124 VaryByParam attribute, OutputCache directive caching and query string, 769 caching multiple versions of web page, 771 caching with specific query string parameters, 770 VBScript, 197 Verisign certificate authority, 892 vertical layout, 444 VerticalPadding property, TreeNodeStyle class, 439 view state EnableViewState property, Page class, 156 encryption, 255–257 example, 254–255 making secure, 255–256 retaining member variables, 257–259 retrieving values, 254 state management options, 289 state management options compared, 288–289 storing custom objects in view state, 259–260 ViewState collection, 254 web controls, 254 web farms, 888 views, pages with multiple views, 326–328 ViewState collection, 254 ViewState property, Page class, 254 ViewStateEncryptionMode property, Page directive, 256 virtual directories accessing subdirectories, 876 creating, 874 creating for new project, 898–901 custom error pages, 886–888 description, 127–129, 867 managing websites with IIS Manager, 873 removing, 875 setting default page, 885 Visible property BoundField class, 544 Control class, setting to false, 327 HtmlControl class, 154 TreeView control, 409–410 WebControl class, 178 VisibleDate property, Calendar control, 322 VisibleMonthChanged event, Calendar control, 320, 323 VisibleWhenLoggedIn property, Login control, 693 974 www.it-ebooks.info ■ INDEX Visual Studio adding references to components, 742, 745 applying style sheet rules, 380–381 applying themes, 385–386 automatic coloring of code, 117 automatic formatting of code, 117 automatically importing namespaces, 116–117 Autos window, 124 benefits, 83 Breakpoints window, 123 browsing and modifying databases in, 454–456 configuring level of error checking, 116 Conversion Wizard, 94 creating components, 739 content pages based on master page, 393–396 database connection in Visual Studio, 454, 456 master page, 392–393 style sheets, 377–378 user controls, 344–346 websites, 84–95 debugging breakpoints, 119 components, 757 customizing breakpoints, 123 debugging large website, 123 overview, 118 single step debugging, 119–122 variable watch windows, 124–125 Visual Studio web server, 118–119 deploying web applications with copying website to remote web server, 901–904 creating virtual directory for new project, 898–901 overview, 897 publishing website, 904–905 description, designing web pages adding web controls, 96–98 configuring web controls in Properties window, 98 overview, 95 displaying inherited styles, 376–377 editing GridView templates in, 566–567 Error List window, 116 error underlining, 115–116 event handling, 141 executing update query in, 464 generating columns with GridView control, 544–545 grid layout feature, 98 highlighted web page code, 100 IntelliSense, 118 introduction, 83 Locals window, 124 member list, 113–115 migrating website from previous version, 93–95 modifying styles in Visual Studio, 374–376 multitargeting, 95 New Web Site dialog box, 85 outlining, 112–113 project files, 89 projectless development, 89 running SQL queries in, 459–460 side-by-side regions for split view, 96 Solution Explorer, 91 solution files, 90 Start Page, 84–85 tooltips, 114 tracking variables, 124 user instance dadabases, 472 views of aspx page, 95 Watch window, 124 web projects, 89 writing code, 110–118 Visual Studio Help reference, 67 Visual Studio Premium, 15 Visual Studio Professional, 15 Visual Studio web server, 119 Visual StudioTest Professional, 15 Visual StudioUltimate, 15 Visual Web Developer Express, 15 VolumeLabel property, DriveInfo class, 590 ■W w \w character, 307 WAN (wide area network), 867 Warn method, 247 975 www.it-ebooks.info ■ INDEX WAT (Website Administration Tool) creating users with, 679–681 Manage Access Rules link, 705 overview, 168–170 role-based security, 701–703 Security tab, 655, 657 setting up forms authentication using, 655–657 setting up Windows authentication using, 663 Watch window, Visual Studio, 124–125 web applications See also ASP.NET applications aspnet_Applications table, 715 benefits using files with, 580 creating with Visual Studio, 85–89 deploying additional configuration steps, 896 ASPNET/network service accounts, 878–879 code compilation, 896–897 copying website to remote web server, 901–904 creating virtual directory for new project, 898–901 publishing website, 904–905 using custom components, 895–896 deploying ASP.NET website, 869 file access, 579 limitations using files with, 579 problem of state for web applications, 253 representing root folder of, 413 scalability and session state, 273 security determining security requirements, 647–648 forms authentication, 649–661 Windows authentication, 663–667 tracking variables, 124 validation, 293 web.config file, 163 web browsers See also browsers Ajax and, 830–831 dealing with non-HTML in web forms, 101 web controls AdRotator control, 323–326 applying style sheet rules, 382 ASP.NET adaptive rendering, 173 page life cycle, 198, 201 reasons for using, 173 workings of, 62 ASP.NET tags, 175–176 automatic postback, 195 AutoPostBack property, 195 Calendar control, 315–323 classes, 174–184 Color property, 180–181 configuring in Properties window, 98 default button, 183 designing web pages with Visual Studio, 96–98 enumerations, 179–180 events, 195, 201 events and automatic postbacks, 193–198 Focus method, 183 Font property, 181–182 greeting card generator example, 201–210 HTML elements underlying, 174 HTML server controls compared, 173 inheritance, 177 list controls, 184–188 MultiView control, 328–333 prefixes, 184 properties and measurements, 179 rendering, 104 resizing, 97 rich controls, 315 server code reacting immediately to events, 194 Table control, 188–193 tags, 175–176 Unit type, 179 user control events, 352 view state, 254 visibility, 178 WebControl class, 177–179 Wizard control, 333–340 web development client-side programming, 7–9 evolution of web development, 3–9 HTML and HTML forms, 3–6 server-side programming, web farms, 869 976 www.it-ebooks.info ■ INDEX Web Form controls, 315 web form designer, Visual Studio benefits, 83 web forms See also web pages creating websites with Visual Studio, 92 events, 138 validated customer form, 308–313 web hosting companies, 866, 896 web methods, 857–858 web pages absolute positioning, 98 adding web controls, 96–98 applying style sheet rules, 380–383 applying themes, 385–386 ASP.NET applications, 127 ASP.NET file type describing, 128 code structure with components, 736 complete XHTML web page, 108–109 components and structure of web form doctype, 102–104 Page directive, 101–102 web form markup, 100–101 XHTML essentials, 104–109 converting HTML page to ASP.NET page, 131–134 creating code-free web pages, 759 creating content pages based on master page, 393–396 creating master page, 392–393 creating style sheets, 377–380 creating websites with Visual Studio, 92 dealing with non-HTML in web forms, 101 default button on, 183 default content, 401–402 designing with Visual Studio, 95–98 displaying full list of users in, 728 embedding dynamic graphics, 361 event handling in web page, 141 focused control after rendering, 183 greeting card generator example, 201–210 grouping portions of pages, 109 indicating type of markup, 102 inheritance, 156 inserting formatted text into, 138 isolation from database, 737 markup, reusing, 343 master pages, 391–410 order of events in page processing, 194 page life cycle, 198, 201 partial refreshes using Ajax, 833–845 placing custom images in, 361–363 progress notification using Ajax, 845–849 redirecting user to new, 157–158 reference to, 178 reusing headers and footers in, 345 stacking panels in, 853 styles, 367–383 table-based layouts for master pages, 403–408 themes, 383–391 throwing exceptions without details, 758 timed refreshes using Ajax, 849–850 user controls compared, 343 web projects, Visual Studio, 89 Web Server Certificate wizard, 893 web servers allowing file uploads, 604–607 creating web server file browser, 591–594 debugging with Visual Studio, 118–119 description, 865 how web servers work, 865–866 virtual directories, 867 Visual Studio benefits, 84 Windows authentication, 663 web services, App_WebReferences directory, 130 web.config file accessing specific directories, 653 accessing specific files, 653 accessing via IIS, 168 add element, 166 adjusting default membership connection string, 674 anonymousIdentification element, 729 appSettings element, 163, 166 authorization section, 705 basic structure of, 163 case-sensitivity, 163 configuration element, 163 configuration inheritance, 165 configuring with WAT, 168–170 connectionStrings element, 163 connectionStrings section, 472, 524 977 www.it-ebooks.info ■ INDEX Download from Wow! eBook web.config file (continued) debugging with Visual Studio, 118 description,129 forms authentication, 651 LocalSqlServer connection string, 713 maximum size of file uploads, 607 maxRequestLength setting, 607 multilayered configuration,165 outputCacheProfiles section, 773 profile properties,721 profile section,716 role-based security,701 serializeAs attribute, 720 session state configuration cookieless setting, 278–281 mode setting, 281–286 overview, 277 timeout setting, 281 storing custom settings in, 166–168 system.web element,163 updating settings, 163 urlMappings section, 428 web applications,163 Windows authentication, 663–665 XML structure of,163 WebConfigurationManager class AppSettings property, 167 creating data-access component, 751 WebControl class, 177–179 Website Administration Tool (WAT) See WAT (Website Administration Tool) website navigation ASP.NET navigation with site maps, 412 Menu control, 442– 448 navigation components, 411 pages with multiple views, Wizard control, 340 site maps binding master page to site map, 418–420 binding pages to site maps, 416–418 binding portions of site maps, 420–4 25 defining site maps, 412–416 example site map,416 mapping URLs, 428 nodes with duplicate URLs, 415 overview, 411 retrieving information from site maps, 425 showing subtrees, 420–424 using different site maps in same file, 424–425 SiteMap class, 425–427 SiteMapPath control, 430–4 35 TreeView control, 435–442 Web.sitemap file binding pages to site maps,416 retrieving site map information from XML file, 412 showing subtrees of site maps, 422 siteMap element,413 siteMapNode element, 413– 415 using different site maps in same file, 425 websites applying theme to entire website, 388 creating with Visual Studio, 84–95 adding web forms, 92 deploying ASP.NET website, 895 additional configuration steps,896 ASPNET/network service accounts, 878–879 code compilation, 896–897 using custom components, 895– 896 deploying ASP.NET website with Visual Studio, 897–905 copying website to remote web server, 901–904 creating virtual directory for new project, 898–901 publishing website, 904–905 managing websites with IIS Manager, 873–874 migrating from previous version of Visual Studio, 93–9 setting up website to use forms authentication, 670 Solution Explorer, 91 synchronizing remote website,904 WeekendDayStyle property, Calendar control, 318 WHERE clause, 461–462 where clause, 798, 817–818 Where expression check box, Expression Editor window, 826 where keyword,820 Where property,826 while loop, 42 978 www.it-ebooks.info ■ INDEX whitespace line breaks, 105 master pages, 400 regular expression characters, 307 wide area network (WAN), 867 widening conversions, 29 Width property, WebControl class, 178 Windows account permissions, deployment configuration, 896 Windows authentication, 663–667 authorization rules, 664 Basic authentication, 890 configuring authentication in IIS 7, 892 data access, ADO.NET, 470 default Windows roles, 665 description, 649 Digest authentication, 890 examining user’s group membership, 664 IIS settings, 892 implementing Windows-based security, 663 integrated Windows authentication, 470, 890 login page, 666 modes, 890 profiles, 712 test page, 666–667 web.config settings, 663–665 WindowsBuiltInRole enumeration, 665 Windows event logs viewing Windows event logs, 229–232 writing to event logs, 232–233 Windows Features window, authentication in IIS 7, 891 WindowsBuiltInRole enumeration, 665 WindowsIdentity class, 661 Wizard control, 333–340 ActiveStepChanged event, 338 ActiveStepIndex property, 336 CreateUserWizard control, 694 creating wizards, 333–337 DisplaySideBar property, 333 events, 337–338 formatting the wizard, 338–340 programming models, 338 slimming down complex wizards, 337 styles, 339 styles and templates, 340 templates, 340 Update( ) method, 338 validation within wizards, 340 WizardStep controls, creating wizards, 333–337 Write method Response class, 161–162 Trace object, 247 WriteAllBytes method, File class, 598 WriteAllLines method, File class, 598 WriteAllText method, File class, 598 WriteLine method, StreamWriter class, 595 write-only properties, 55 WriteStartElement( ) method, 634 WriteXml( ) method, 491 wwwroot directory creating virtual directories, 875, 898 managing websites with IIS Manager, 873 ■X x coordinate, 359 XAttribute class, 629 XCopy deployment, 896 XDocument class, 634–635 XDocument.Load( ) method, 628 XElement class, 629–630 XHTML attributes, 107–108 complete XHTML web page, 108–109 components and structure of web form, 104–109 configuring level of error checking, 116 documents, complete XHTML web page, 108 elements, 105–107 formatting in, 108 HTML and, 103 references to HTML in this book, 103 strict, 102 transitional, 102 XML attributes creating XML document as objects, 627 syntax and values, 614 using elements or attributes, 613–614 classes XmlDocument class, 623 XmlTextReader class, 618–623 XmlTextWriter class, 615–618 979 www.it-ebooks.info ■ INDEX XML (continued) comments, 19, 166, 614, 627 declaration, 613 description, 103 documents class providing in-memory model of, 624 comments, 614 creating XML document as objects, 627 declaration, 613 description, 623 parsing, 611, 613 reading, 618, 628–630 reading part of XML document, 623 searching XML document, 631 validating against schema, 639 working with XML documents in memory, 623–628 writing, 615 elements attributes, 613–614 case sensitivity, 612 composition of, 612 creating XML document as objects, 627 description, 611 empty element, 413 nesting, 612 overlapping elements, 613 special characters, 612 using elements or attributes, 613–614 whitespace, 612 formatting XML, 618 introduction, 612 metalanguage, 611 namespaces attributes, 634 namespace prefixes, 633 naming conventions, 632 xmlns attribute, 634 nodes, 618 overview, 609–610 parsers, 611 serialization, custom data types, 724 validation validating XML document against schema, 639 XML namespaces, 632–634 XSD documents, 635–639 web.config file format, 163 XML files compared to databases, 612 XSLT (XSL Transformations), 640–643 XML Schema Definition (XSD), 632, 635–636, 639 Xml value, serializeAs attribute, 720 Xml web control, 642–643 XmlAttribute class creating XML document as objects, 627 object model for XmlDocument, 624 XmlComment class, 627 XmlDataSource class, 522 XmlDataSource control, 781 XmlDocument class GetElementById method, 631 GetElementsByTagName method, 631 in-memory model of XML documents, 624 object model, 624 overview, 623 reading XML document, 628–630 Save method, 626–627 searching XML document, 631 when to use, 630 XmlElement class, 627 XmlElement.Element( ) method, 635 xmlns attribute, 413, 634 XmlReader class, 637 XmlReaderSettings class, 637, 639 XmlSchema class, 637 XmlSchemaCollection class, 637 XmlSchemaException class, 638 XmlSerializer class, 724 XmlSiteMapProvider control, 412 XmlTextReader class, 618, 621, 623, 630 XmlTextWriter class, 615–618, 634 XNamespace object, 634 xs namespace prefix, XSD documents, 636 XSD (XML Schema Definition), 632, 635–636, 639 XSL (eXtensible Stylesheet Language), 640 XslCompiledTransform class, 640, 642 XSLT (XSL Transformations), 640–643 ■Y y coordinate, 359 Year property, DateTime class, 34–35 980 www.it-ebooks.info ■ INDEX ■Z zero-based counting arrays, 36 strings, 32 zero-touch deployment, 896 981 www.it-ebooks.info www.it-ebooks.info www.it-ebooks.info ...www.it-ebooks.info Beginning ASP.NET in C# 2010 ■■■ Matthew MacDonald www.it-ebooks.info Beginning ASP.NET in C# 2010 Copyright © 2010 by Matthew MacDonald All rights reserved... about NET programming, including Pro Silverlight in C# (Apress, 2010) and Pro WPF in C# 2010 (Apress, 2010) He’s also the coauthor of Pro ASP.NET in C# 2010 (Apress, 2010) He lives in Toronto with... 49 9 Introducing Data Binding .49 9 Types of ASP.NET Data Binding 500 How Data Binding Works 500 Single-Value Data Binding 500 A Simple Data Binding