The most comprehensive book on Microsofts new ASP.NET 4, ASP.NET 4 Unleashed covers all facets of ASP.NET development. Led by Microsoft ASP.NET program manager Stephen Walther, an expert author team thoroughly covers the entire platform. The authors first introduce the ASP.NET Frameworks basic controls and show how to create common site-wide layouts and styles. Next, they cover all aspects of accessing, presenting, organizing, and editing data. Youll find thorough and practical sections on building custom components and controls, providing effective site navigation, securing sites and applications, and much more. This book presents hundreds of realistic code examples, reflecting the authors unsurpassed experience with ASP.NET both inside and outside Microsoft. * Build interactive Web Forms, validate form data, and upload files * Provide interactive calendars, wizards, site maps, and other valuable features * Design efficient, maintainable sites with Master Pages and Themes * Build data-driven applications with database controls, ADO.NET data access components, QueryExtender, LINQ to SQL, and WCF Data Services * Generate charts on the fly with the new Chart Control * Extend ASP.N
ET with custom controls and reusable components * Create site registration and authentication systems that store membership data in SQL Server or Active Directory * Use URL Routing to build dynamism, flexibility, readability, and SEO-friendliness into your URLs * Improve performance and scalability with caching and preloading * Maintain state with cookies, cookieless session state, and profiles * Localize, configure, package, and deploy ASP.NET applications * Use the ASP.NET MVC Framework to improve agility, testability, speed to market, and extensibility * Retrofit existing ASP.NET applications with Ajax and build pure client-side Ajax web applications * Construct a complete ASP.NET 4 website from start to finish
                         
                        
                            Introduction  1  Part I  Building ASP.NET Pages  1  Overview of the ASP.NET Framework  5  ASP.NET and the .NET Framework  9  Understanding the Framework Class Library  9  Understanding the Common Language Runtime  17  Understanding ASP.NET Controls  19  Overview of ASP.NET Controls  19  Understanding HTML Controls  21  Understanding and Handling Control Events  22  Understanding View State  28  Understanding ASP.NET Pages  34  Understanding Dynamic Compilation  34  Understanding Control Trees  38  Using Code-Behind Pages  39  Handling Page Events  44  Using the Page.IsPostBack Property  46  Debugging and Tracing ASP.NET Pages  48  Tracing Page Execution  52  Installing ASP.NET  55  Summary  57  2  Using the Standard Controls  59  Displaying Information  59  Using the Label Control  60  Using the Literal Control  65  Accepting User Input  68  Using the TextBox Control  68  Using the CheckBox Control  76  Using the RadioButton Control  79  Submitting Form Data  84  Using the Button Control  84  Using the LinkButton Control  86  Using the ImageButton Control  89  Using Client Scripts with Button Controls  94  Performing Cross-Page Posts  96  Specifying a Default Button  100  Handling the Command Event  101  Displaying Images  104  Using the Image Control  104  Using the ImageMap Control  106  Using the Panel Control  111  Using the HyperLink Control  118  Summary  119  3  Using the Validation Controls  121  Overview of the Validation Controls  121  Validation Controls and JavaScript  126  Using Page.IsValid  126  Setting the Display Property  127  Highlighting Validation Errors  128  Using Validation Groups  133  Disabling Validation  138  Using the RequiredFieldValidator Control  139  Using the RangeValidator Control  143  Using the CompareValidator Control  146  Using the RegularExpressionValidator Control  151  Using the CustomValidator Control  154  Using the ValidationSummary Control  162  Creating Custom Validation Controls  167  Creating a LengthValidator Control  168  Creating an AjaxValidator Control  170  Summary  177  4  Using the Rich Controls  179  Accepting File Uploads  180  Saving Files to the File System  181  Saving Files to a Database  185  Uploading Large Files  189  Displaying a Calendar  195  Creating a Pop-Up Date Picker  199  Rendering a Calendar from a Database Table  202  Displaying Advertisements  207  Storing Advertisements in an XML File  208  Storing Advertisements in a Database Table  212  Tracking Impressions and Transfers  213  Displaying Different Page Views  220  Displaying a Tabbed Page View  220  Displaying a Multipart Form  223  Displaying a Wizard  226  Displaying Silverlight Content  231  Summary  234  Part II  Designing ASP.NET Websites  5  Designing Websites with Master Pages  237  Creating Master Pages  238  Creating Default Content  242  Nesting Master Pages  245  Using Images and Hyperlinks in Master Pages  251  Registering Master Pages in Web Configuration  254  Modifying Master Page Content  255  Using the Title Attribute  255  Using the Page Header Property  256  Exposing Master Page Properties  258  Using FindControl with Master Pages  261  Loading Master Pages Dynamically  263  Loading Master Pages Dynamically for Multiple Content Pages  266  Summary  268  6  Designing Websites with Themes  269  Creating Themes  270  Adding Skins to Themes  270  Creating Named Skins  273  Themes Versus StyleSheetThemes  275  Disabling Themes  277  Registering Themes in the Web Configuration File  280  Adding Cascading Style Sheets to Themes  281  Adding Multiple Cascading Style Sheets to a Theme  285  Changing Page Layouts with Cascading Style Sheets  285  Creating Global Themes  290  Applying Themes Dynamically  291  Applying Skins Dynamically  293  Summary  298  7  Creating Custom Controls with User Controls  299  Creating User Controls  300  Registering User Controls in the Web Configuration File  303  Exposing Properties from a User Control  304  Exposing Events from a User Control  307  Creating an AddressForm Control  311  AJAX and User Controls  317  Dynamically Loading User Controls  320  Using the Reference Directive  322  Creating a Multipage Wizard  327  Summary  336  Part III  Performing Data Access  8  Overview of Data Access  337  Using DataBound Controls  337  Working with List Controls  338  Working with Tabular DataBound Controls  341  Working with Hierarchical DataBound Controls  345  Working with Other Controls  348  Using DataSource Controls  351  Using ASP.NET Parameters with DataSource Controls  353  Using Programmatic DataBinding  356  Understanding Templates and DataBinding Expressions  358  Using Templates  359  Using DataBinding Expressions  362  Using Two-Way DataBinding Expressions  366  Overview of SQL Server 2008 Express  369  Features of SQL Server Express  369  SQL Server 2008 Express Management Tools  370  Server Databases Versus Local Databases  371  Sample Database-Driven Web Application  375  Summary  378  9  Using the SqlDataSource Control  379  Creating Database Connections  380  Connecting to Microsoft SQL Server  380  Connecting to Other Databases  384  Storing Connection Strings in the Web Configuration File  386  Encrypting Connection Strings  388  Executing Database Commands  389  Executing Inline SQL Statements  389  Executing Stored Procedures  392  Filtering Database Rows  395  Changing the Data Source Mode  397  Handling SQL Command Execution Errors  398  Canceling Command Execution  403  Using ASP.NET Parameters with the SqlDataSource Control  406  Using the ASP.NET Parameter Object  406  Using the ASP.NET ControlParameter Object  410  Using the ASP.NET CookieParameter Object  415  Using the ASP.NET FormParameter Object  417  Using the ASP.NET ProfileParameter Object  420  Using the QueryStringParameter Object  422  Using the SessionParameter Object  424  Programmatically Executing SqlDataSource Commands  426  Adding ADO.NET Parameters  426  Executing Insert, Update, and Delete Commands  428  Executing Select Commands  430  Caching Database Data with the SqlDataSource Control  435  Summary  438  10  Using List Controls  439  Overview of the List Controls  439  Declaring List Items  439  Binding to a Data Source  442  Determining the Selected List Item  446  Appending Data Items  450  Enabling Automatic PostBacks  452  Using the Items Collection  454  Working with the DropDownList Control  458  Working with the RadioButtonList Control  461  Working with the ListBox Control  463  Working with the CheckBoxList Control  467  Working with the BulletedList Control  470  Creating a Custom List Control  475  Summary  484  11  Using the GridView Control  485  GridView Control Fundamentals  486  Displaying Data  486  Selecting Data  489  Using Data Keys  492  Sorting Data  495  Paging Through Data  501  Editing Data  510  Displaying Empty Data  514  Formatting the GridView Control  519  Using ViewState with the GridView Control  521  Using Fields with the GridView Control  522  Using BoundFields  523  Using CheckBoxFields  526  Using CommandFields  527  Using Button Fields  530  Using HyperLink Fields  534  Using ImageFields  539  Using TemplateFields  543  Working with GridView Control Events  546  Highlighting GridView Rows  547  Displaying Column Summaries  550  Displaying Nested Master/Details Forms  552  Extending the GridView Control  555  Creating a LongTextField  556  Creating a DeleteButtonField  560  Creating a ValidatedField  563  Summary  566  12  Using the DetailsView and FormView Controls  567  Using the DetailsView Control  567  Displaying Data with the DetailsView Control  567  Using Fields with the DetailsView Control  571  Displaying Empty Data with the DetailsView Control  573  Paging through Data with the DetailsView Control  576  Updating Data with the DetailsView Control  584  Inserting Data with the DetailsView Control  593  Deleting Data with the DetailsView Control  597  Working with DetailsView Control Events  598  Formatting the DetailsView Control  601  Using the FormView Control  604  Displaying Data with the FormView Control  605  Paging Through Data with the FormView Control  607  Editing Data with the FormView Control  612  Inserting Data with the FormView Control  616  Deleting Data with the FormView Control  619  Summary  622  13  Using the Repeater and DataList Controls  623  Using the Repeater Control  623  Displaying Data with the Repeater Control  624  Using Templates with the Repeater Control  627  Handling Repeater Control Events  633  Using the DataList Control  640  Displaying Data with the DataList Control  640  Displaying Data in Multiple Columns  644  Using Templates with the DataList Control  645  Selecting Data with the DataList Control  648  Editing Data with the DataList Control  651  Formatting the DataList Control  657  Summary  660  14  Using the ListView and DataPager Controls  661  Using the ListView Control  661  Using the LayoutTemplate and ItemTemplate  662  Using the GroupTemplate  666  Selecting a Row  669  Sorting Database Data  672  Editing Database Data  675  Using the DataPager Control  681  Creating a Custom User Interface for Paging  684  Data Source Paging with the DataPager Control  686  Summary  688  15  Using the Chart Control  689  Chart Control Fundamentals  690  Displaying Data with the Chart Control  690  Sorting and Filtering Data  694  Using Statistical Formulas  698  Customizing a Charts Appearance  704  Customizing the Background and Plotting Area  704  Three-Dimensional Charts  708  Drill-Down Reports  709  Summary  710  16  Using the QueryExtender Control  711  Introduction to the QueryExtender Control  711  Querying Data with Declarative Syntax  712  Querying with the ControlFilterExpression  712  Querying with the CustomExpression  712  Querying with the DynamicFilterExpression  713  Querying with the MethodExpression  713  Sorting with the OrderByExpression  714  Querying with the PropertyExpression  715  Querying with the RangeExpression  715  Querying with the SearchExpression  716  Building a Sample Page with the QueryExtender Control  717  Summary  720  Part IV  Building Components  17  Building Components  721  Building Basic Components  722  Components and Dynamic Compilation  724  Mixing Different Language Components in the App_Code Folder  725  Declaring Methods  726  Declaring Fields and Properties  728  Declaring Constructors  733  Overloading Methods and Constructors  734  Declaring Namespaces  736  Creating Partial Classes  738  Inheritance and Abstract Classes  739  Declaring Interfaces  742  Using Access Modifiers  743  Intellisense and Components  744  Using ASP.NET Intrinsics in a Component  746  Building Component Libraries  749  Compiling Component Libraries  750  Adding a Reference to a Class Library  753  Architectural Considerations  757  Building Multitier Applications  757  Creating the User Interface Layer  758  Creating the Business Logic Layer  761  Creating the Data Access Layer  765  Summary  769  18  Using the ObjectDataSource Control  771  Representing Objects with the ObjectDataSource Control  772  Binding to a Component  772  Binding to a DataReader  774  Binding to a DataSet  776  Binding to a LINQ to SQL Query  778  Binding to a Web Service  779  Using Parameters with the ObjectDataSource Control  783  Using Different Parameter Types  787  Passing Objects as Parameters  790  Paging, Sorting, and Filtering Data with the ObjectDataSource Control  795  User Interface Paging  795  Data Source Paging  798  User Interface Sorting  805  Data Source Sorting  808  Filtering Data  813  Handling ObjectDataSource Control Events  817  Adding and Modifying Parameters  818  Handling Method Errors  822  Handling the ObjectCreating Event  826  Concurrency and the ObjectDataSource Control  828  Extending the ObjectDataSource Control  832  Creating a Custom ObjectDataSource Control  832  Creating Custom Parameter Objects  835  Summary  841  19  Building Data Access Components with ADO.NET  843  Connected Data Access  844  Using the Connection Object  848  Using the Command Object  859  Using the DataReader Object  881  Disconnected Data Access  888  Using the DataAdapter Object  889  Using the DataTable Object  896  Using the DataView Object  906  Using the DataSet Object  908  Executing Asynchronous Database Commands  911  Using Asynchronous ADO.NET Methods  912  Using Asynchronous ASP.NET Pages  914  Building Database Objects with the .NET Framework  918  Enabling CLR Integration  918  Creating User-Defined Types with .NET Framework  919  Building a Data Access Layer with a User-Defined Type  924  Creating Stored Procedures with .NET Framework  928  Creating the Stored Procedure Assembly  928  Summary  934  20  Data Access with LINQ to SQL  935  New C# and VB.NET Language Features  936  Understanding Automatic Properties  936  Understanding Initializers  937  Understanding Type Inference  939  Understanding Anonymous Types  940  Understanding Generics  941  Understanding Lambda Expressions  944  Understanding Extension Methods  948  Understanding LINQ  949  Creating LINQ to SQL Entities  951  Building Entities by Hand  952  Building Entities with the LINQ to SQL Designer  956  Building Entity Associations  959  Using the LinqDataSource Control  960  Performing Standard Database Commands with LINQ to SQL  964  LINQ to Objects Versus LINQ to SQL  964  Selecting with LINQ to SQL  965  Inserting with LINQ to SQL  973  Updating with LINQ to SQL  976  Deleting with LINQ to SQL  981  Dynamic Queries  983  Debugging LINQ to SQL  987  Creating a Custom LINQ Entity Base Class  991  Using the Entity Base Class  991  Performing Standard Data-Access Operations with the EntityBase Class  992  Performing Validation with the EntityBase Class  994  Summary  1000  21  Data Access with WCF Data Services  1001  Overview of WCF Data Services  1001  Using Data Services with a Service Reference  1002  Using Data Services with a Data Context  1007  Summary  1009  Part V  Site Navigation  22  Using the Navigation Controls  1011  Understanding Site Maps  1011  Using the SiteMapPath Control  1013  Formatting the SiteMapPath Control  1016  Using the Menu Control  1020  Declaratively Adding Menu Items  1021  Using the Menu Control with the MultiView Control  1024  Binding to a Site Map  1027  Binding to an XML File  1031  Binding to Database Data  1035  Formatting the Menu Control  1040  Using Templates with the Menu Control  1046  Using the TreeView Control  1049  Declaratively Adding Tree Nodes  1049  Displaying Check Boxes with the TreeView Control  1054  Binding to a Site Map  1057  Binding to an XML File  1058  Binding to Database Data  1061  Using Populate On Demand and AJAX  1064  Formatting the TreeView Control  1070  Building a SQL Hierarchical Data Source Control  1077  Summary  1081  23  Using Site Maps  1083  Using the SiteMapDataSource Control  1084  Setting SiteMapDataSource Properties  1086  Using the SiteMap Class  1090  Using the SiteMapNode Class  1093  Advanced Site Map Configuration  1095  Using Security Trimming  1096  Merging Multiple Site Maps  1101  Creating Custom Site Map Attributes  1103  Creating Custom Site Map Providers  1105  Creating the AutoSiteMapProvider  1106  Creating the SqlSiteMapProvider  1111  Generating a Google SiteMap File  1116  Summary  1120  24  Advanced Navigation  1123  Remapping URLs  1124  Creating a Custom UrlRemapper Module  1127  Using the VirtualPathProvider Class  1132  Limitations of the VirtualPathProvider Class  1133  Understanding the VirtualPathProvider Class  1133  Registering a VirtualPathProvider Class  1135  Summary  1136  25  Using the ASP.NET URL Routing Engine  1137  Introduction to URL Routing  1137  Basic URL Routing Scenarios  1139  Mapping Basic URLs  1139  Mapping URLs with Parameters  1140  Mapping URLs with Multiple Segments  1141  Linking to Other Pages with Routes  1142  Advanced URL Routing  1143  Using Routes with Default Parameters  1143  Using Constrained Routes  1144  Security Concerns with Routes  1146  Summary  1146  Part VI  Security  26  Using the Login Controls  1147  Overview of the Login Controls  1148  Using the Login Control  1152  Automatically Redirecting a User to the Referring Page  1155  Automatically Hiding the Login Control from Authenticated Users  1155  Using a Template with the Login Control  1157  Performing Custom Authentication with the Login Control  1160  Using the CreateUserWizard Control  1162  Configuring Create User Form Fields  1163  Sending a Create User Email Message  1166  Automatically Redirecting a User to the Referring Page  1169  Automatically Generating a Password  1171  Using Templates with the CreateUserWizard Control  1177  Adding Steps to the CreateUserWizard Control  1181  Using the LoginStatus Control  1183  Using the LoginName Control  1185  Using the ChangePassword Control  1186  Sending a Change Password Email  1188  Using Templates with the ChangePassword Control  1190  Using the PasswordRecovery Control  1193  Sending the Original Password  1195  Requiring a Security Question and Answer  1196  Using Templates with the PasswordRecovery Control  1197  Using the LoginView Control  1199  Using Roles with the LoginView Control  1201  Summary  1204  27  Using ASP.NET Membership  1205  Configuring Authentication  1206  Configuring Forms Authentication  1207  Using Cookieless Forms Authentication  1209  Using Sliding Expiration with Forms Authentication  1210  Using Forms Authentication Across Applications  1210  Using Forms Authentication Across Domains  1214  Using the FormsAuthentication Class  1216  Using the User Class  1220  Configuring Authorization  1221  Authorizing by Role  1223  Authorizing Files by Location  1224  Using Authorization with Images and Other File Types  1225  Using ASP.NET Membership  1226  Using the Membership Application Programming Interface  1227  Encrypting and Hashing User Passwords  1232  Modifying User Password Requirements  1234  Locking Out Bad Users  1235  Configuring the SQLMembershipProvider  1237  Configuring the ActiveDirectoryMembershipProvider  1239  Creating a Custom Membership Provider  1244  Using the Role Manager  1246  Configuring the SqlRoleProvider  1247  Configuring the WindowsTokenRoleProvider  1252  Configuring the AuthorizationStoreRoleProvider  1254  Caching Roles in a Browser Cookie  1256  Using the Roles Application Programming Interface  1258  Summary  1260  Part VII  Building ASP.NET Applications  28  Maintaining Application State  1263  Using Browser Cookies  1264  Cookie Security Restrictions  1265  Creating Cookies  1266  Reading Cookies  1269  Setting Cookie Properties  1272  Deleting Cookies  1273  Working with Multivalued Cookies  1275  Using Session State  1279  Storing Database Data in Session State  1281  Using the Session Object  1284  Handling Session Events  1285  Controlling When a Session Times Out  1287  Using Cookieless Session State  1288  Configuring a Session State Store  1290  Configuring SQL Server Session State  1294  Using Profiles  1297  Creating Profile Groups  1301  Supporting Anonymous Users  1303  Migrating Anonymous Profiles  1307  Inheriting a Profile from a Custom Class  1308  Creating Complex Profile Properties  1310  Saving Profiles Automatically  1317  Accessing Profiles from Components  1321  Using the Profile Manager  1323  Configuring the Profile Provider  1326  Creating a Custom Profile Provider  1327  Summary  1332  29  Caching Application Pages and Data  1335  Overview of Caching  1335  Using Page Output Caching  1337  Varying the Output Cache by Parameter  1338  Varying the Output Cache by Control  1342  Varying the Output Cache by Header  1345  Varying the Output Cache by Browser  1346  Varying the Output Cache by a Custom Function  1347  Specifying the Cache Location  1349  Creating a Page Output Cache File Dependency  1351  Expiring the Page Output Cache Programmatically  1353  Manipulating the Page Output Cache Programmatically  1358  Creating Page Output Cache Profiles  1360  Using Partial Page Caching  1361  Using Post-Cache Substitution  1362  Caching with a User Control  1366  Sharing a User Control Output Cache  1370  Manipulating a User Control Cache Programmatically  1370  Creating a User Control Cache File Dependency  1372  Caching Dynamically Loaded User Controls  1373  Using DataSource Caching  1375  Using an Absolute Cache Expiration Policy  1376  Using a Sliding Cache Expiration Policy  1378  Caching with the ObjectDataSource Control  1380  Caching with the XmlDataSource Control  1382  Creating a DataSource Control Key Dependency  1383  Using Data Caching  1387  Using the Cache Application Programming Interface  1387  Adding Items to the Cache  1390  Adding Items with an Absolute Expiration Policy  1390  Adding Items with a Sliding Expiration Policy  1393  Adding Items with Dependencies  1394  Specifying Cache Item Priorities  1396  Configuring the Cache  1397  Using SQL Cache Dependencies  1399  Using Polling SQL Cache Dependencies  1399  Configuring Polling SQL Cache Dependencies  1400  Using Polling SQL Cache Dependencies with Page Output Caching  1403  Using Polling SQL Cache Dependencies with DataSource Caching  1405  Using Polling SQL Cache Dependencies with Data Caching...1406  Using Push SQL Cache Dependencies  1408  Configuring Push SQL Cache Dependencies  1409  Using Push SQL Cache Dependencies with Page Output Caching  1411  Using Push SQL Cache Dependencies with DataSource Caching  1412  Using Push SQL Cache Dependencies with Data Caching  1415  Summary  1416  30  Localizing Applications for Multiple Languages  1419  Setting the Current Culture  1420  Setting a Culture Manually  1421  Automatically Detecting a Culture  1428  Setting the Culture in the Web Configuration File  1432  Culture and ASP.NET Controls  1433  Using the CultureInfo Class  1434  Using the CultureInfo Class to Format String Values  1435  Comparing and Sorting String Values  1437  Creating Local Resources  1438  Explicit Localization Expressions  1438  Implicit Localization Expressions  1441  Using Local Resources with Page Properties  1443  Retrieving Local Resources Programmatically  1444  Creating Global Resources  1446  Retrieving Global Resources Programmatically  1448  Using Strongly Typed Localization Expressions  1449  Using the Localize Control  1450  Summary  1452  31  Working with the HTTP Runtime  1453  Creating a Custom BuildProvider  1454  Creating a Simple BuildProvider  1454  Creating a Data Access Component BuildProvider  1458  Creating a Custom ExpressionBuilder  1464  Creating a Lookup ExpressionBuilder  1465  Creating HTTP Handlers  1470  Creating a Generic Handler  1470  Implementing the IHttpHandler Interface  1473  Creating an Asynchronous HTTP Handler  1478  Working with HTTP Applications and HTTP Modules  1482  Creating a Global.asax File  1483  Creating Custom HTTP Modules  1487  Summary  1489  32  Building Dynamic Data Applications  1491  Introducing ASP.NET Dynamic Data  1491  Building a Dynamic Data Application  1492  Working with Dynamic Data Templates  1496  Making Shared Template Changes  1497  Creating Type and Entity-Specific Templates  1497  Summary  1500  33  Building ASP.NET MVC Applications  1501  Introducing the ASP.NET MVC Framework  1501  Models  1502  Views  1502  Controllers  1502  Creating Your First ASP.NET MVC Application  1502  Building an MVC Page  1505  Accepting Form Input  1507  Summary  1509  34  Configuring Applications  1511  Overview of Website Configuration  1511  Using the Web Site Administration Tool  1513  Using the ASP.NET Microsoft Management Console Snap-In  1514  ASP.NET Configuration Sections  1515  Applying Configuration Settings to a Particular Path  1517  Locking Configuration Settings  1518  Adding Custom Application Settings  1520  Placing Configuration Settings in an External File  1522  Using the Configuration API  1523  Reading Configuration Sections from the Current Application  1524  Opening a Configuration File  1529  Opening a Configuration File on a Remote Server  1533  Using the Configuration Class  1536  Modifying Configuration Sections  1539  Provisioning a New Website  1543  Creating Custom Configuration Sections  1546  Creating a Configuration Element Collection  1551  Creating Encrypted Configuration Sections  1556  Encrypting Sections with the aspnet_regiis Tool  1557  Encrypting Sections Programmatically  1558  Deploying Encrypted Web Configuration Files  1561  Summary  1564  35  Deploying ASP.NET Web Applications  1565  Packaging Web Applications  1565  Using Web.config Transformations  1569  Deploying Databases  1571  One-Click Publishing Web Applications  1572  Summary  1573  Part VIII  Custom Control Building  36  Building Custom Controls  1575  Overview of Custom Control Building  1575  Building Fully Rendered Controls  1576  Building Composite Controls  1587  Building Hybrid Controls  1590  View State and Control State  1596  Supporting View State  1596  Supporting Control State  1599  Processing Postback Data and Events  1602  Handling Postback Data  1602  Handling Postback Events  1606  Working with Control Property Collections  1618  Using the ParseChildren Attribute  1618  Using the AddParsedSubObject() Method  1626  Using a ControlBuilder  1626  Creating a Better Designer Experience  1631  Applying Design-Time Attributes to a Control  1631  Creating Control Designers  1636  Creating a Container ControlDesigner  1636  Adding Smart Tasks  1640  Summary  1645  37  Building Templated Databound Controls  1647  Creating Templated Controls  1647  Implementing the ITemplate Interface  1648  Creating a Default Template  1652  Supporting Simplified Databinding  1656  Supporting Two-Way Databinding  1660  Creating Templated Databound Controls  1666  Creating a DivView Control  1667  Summary  1672  Part IX  ASP.NET AJAX  38  Using Server-Side ASP.NET AJAX  1673  The Ajax Vision  1674  Server-Side Ajax Versus Client-Side Ajax  1675  Debugging Ajax Applications  1675  Using the UpdatePanel Control  1677  Specifying UpdatePanel Triggers  1686  Nesting UpdatePanel Controls  1688  Updating UpdatePanels Programmatically  1692  UpdatePanels and JavaScript  1694  UpdatePanel Server-Side Page Execution Life Cycle  1697  UpdatePanel Client-Side Page Execution Life Cycle  1700  Canceling the Current Asynchronous Postback  1707  Aborting the Previous Asynchronous Postback  1710  Passing Additional Information During an Asynchronous Postback  1712  Handling UpdatePanel Errors Gracefully  1714  UpdatePanel Performance  1720  Using the Timer Control  1724  Using the UpdateProgress Control  1728  Summary  1731  39  Using the ASP.NET AJAX Control Toolkit  1733  Using the ASP.NET AJAX Control Toolkit  1734  Overview of the Toolkit Controls  1737  Using the AutoComplete Control  1739  Using the AutoCompleteExtender with a Page Method  1740  Using the AutoCompleteExtender with a Web Service Method  1743  Using Text and Value Pairs with the AutoCompleteExtender  1746  Using the DragPanel Control  1750  Using the FilteredTextBox Control  1754  Using the MaskedEdit Control  1756  Using the Animation Control  1759  Using the UpdatePanelAnimation Control  1764  Summary  1768  40  Client-Side Ajax with jQuery  1769  What Is jQuery?  1769  Using the jQuery Library  1770  Creating a jQuery File  1771  The $ Method and $(document).ready()  1773  jQuery Selectors  1774  Calling Web Services from the Client  1776  Calling an External Web Service  1776  Calling a Static Page Method  1780  Summary  1781  Index  1783