MacDonald / Mabbutt / Freeman | Pro ASP.NET 4 in VB 2010 | E-Book | www.sack.de
E-Book

E-Book, Englisch, 1664 Seiten

MacDonald / Mabbutt / Freeman Pro ASP.NET 4 in VB 2010


3rd ed
ISBN: 978-1-4302-2512-6
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark

E-Book, Englisch, 1664 Seiten

ISBN: 978-1-4302-2512-6
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark



ASP.NET 4 is the principal standard for creating dynamic web pages on the Windows platform. Pro ASP.NET 4 in VB 2010 raises the bar for high-quality, practical advice on learning and deploying Microsoft's dynamic web solution. This edition is updated with everything you need to come to grips with version 4 of ASP.NET, including coverage of ASP.NET MVC, ASP.NET AJAX 4, ASP.NET Dynamic Data, and Silverlight 3. Seasoned .NET professionals Matthew MacDonald and Mario Szpuszta explain how you can get the most from these groundbreaking new technologies. They cover ASP.NET 4 as a whole, illustrating both the brand-new features and the functionality carried over from previous versions of ASP. This book will give you the knowledge you need to code real ASP.NET 4 applications in the best possible style.

Matthew MacDonald is an author,educator, and MCSD developer who has a passion for emerging technologies. He isthe author of more than a dozen books about .NET programming. In a dimly-remembered past life, he studied English literature and theoretical physics.

MacDonald / Mabbutt / Freeman Pro ASP.NET 4 in VB 2010 jetzt bestellen!

Weitere Infos & Material


1;Title Page;1
2;Copyright Page;2
3;Contents at a Glance;4
4;Table of Contents;6
5;About the Authors;31
6;About the Technical Reviewer;32
7;Introduction;33
7.1;What Does This Book Cover?;33
7.2;Who Is This Book For?;34
7.3;What Do You Need to Use This Book?;35
7.4;Customer Support;35
7.4.1;Sample Code;35
7.4.2;Errata;35
8;PART I Core Concepts;36
9;CHAPTER 1 Introducing ASP.NET;37
9.1;The Seven Pillars of ASP.NET;37
9.1.1;#1: ASP.NET Is Integrated with the .NET Framework;37
9.1.2;#2: ASP.NET Is Compiled, Not Interpreted;38
9.1.3;#3: ASP.NET Is Multilanguage;40
9.1.4;#4: ASP.NET Is Hosted by the Common Language Runtime;42
9.1.5;#5: ASP.NET Is Object-Oriented;43
9.1.6;#6: ASP.NET Supports all Browsers;45
9.1.7;#7: ASP.NET Is Easy to Deploy and Configure;45
9.2;The Evolution of ASP.NET;46
9.2.1;ASP.NET 1.0 and 1.1;46
9.2.2;ASP.NET 2.0;46
9.2.3;ASP.NET 3.5;48
9.2.3.1;LINQ;48
9.2.3.2;ASP.NET AJAX;49
9.2.4;ASP.NET 4;51
9.2.4.1;ASP.NET MVC;52
9.2.4.2;ASP.NET Dynamic Data;52
9.2.5;Silverlight;53
9.3;Summary;53
10;CHAPTER 2 Visual Studio;54
10.1;Introducing Visual Studio;54
10.1.1;Websites and Web Projects;55
10.1.2;Creating a Projectless Website;56
10.1.2.1;The Development Language;57
10.1.2.2;The Framework Version;57
10.1.2.3;The Template;58
10.1.2.4;The Location;59
10.1.3;Designing a Web Page;61
10.1.3.1;Absolute Positioning;62
10.1.3.2;Smart Tags;63
10.1.3.3;Static HTML Tags;64
10.1.3.4;HTML Tables;64
10.1.3.5;Structuring HTML Markup;65
10.2;The Visual Studio IDE;67
10.2.1;Solution Explorer;69
10.2.2;Document Window;70
10.2.3;Toolbox;70
10.2.4;Error List and Task List;71
10.2.5;Server Explorer;73
10.3;The Code Editor;74
10.3.1;Adding Assembly References;75
10.3.2;IntelliSense and Outlining;78
10.3.2.1;Outlining;78
10.3.2.2;Member List;79
10.3.2.3;Error Underlining;81
10.3.3;Visual Studio 2010 Improvements;81
10.3.3.1;IntelliSense Gets More Intelligent;82
10.3.3.2;New Tools for Search and Navigation;83
10.3.3.3;Draggable Document Windows;85
10.4;The Code Model;85
10.4.1;How Code-Behind Files Are Connected to Pages;88
10.4.2;How Control Tags Are Connected to Page Variables;89
10.4.3;How Events Are Connected to Event Handlers;90
10.5;Web Projects;91
10.5.1;Project-Based Development;92
10.5.2;Creating a Web Project;93
10.5.3;Migrating a Website from a Previous Version of Visual Studio;94
10.6;Visual Studio Debugging;96
10.6.1;Single-Step Debugging;97
10.6.2;Variable Watches;100
10.6.3;Advanced Breakpoints;101
10.7;The Web Development Helper;101
10.8;Summary;103
11;CHAPTER 3 Web Forms;104
11.1;Page Processing;105
11.1.1;HTML Forms;105
11.1.2;Dynamic User Interface;107
11.1.3;The ASP.NET Event Model;108
11.1.4;Automatic Postbacks;109
11.1.4.1;Automatic Postbacks “Under the Hood”;109
11.1.5;View State;110
11.1.5.1;View State “Under the Hood”;113
11.1.5.2;View State Chunking;114
11.1.6;XHTML Compliance;115
11.1.6.1;Document Type Definitions;116
11.1.6.2;Configuring XHTML Rendering;117
11.1.6.3;Visual Studio’s Default Doctype;119
11.1.6.4;XHTML Validation;119
11.1.7;Client-Side Control IDs;121
11.2;Web Forms Processing Stages;123
11.2.1;Page Framework Initialization;124
11.2.2;User Code Initialization;125
11.2.3;Validation;125
11.2.4;Event Handling;126
11.2.5;Automatic Data Binding;126
11.2.6;Cleanup;127
11.2.7;A Page Flow Example;127
11.3;The Page As a Control Container;130
11.3.1;Showing the Control Tree;130
11.3.2;The Page Header;134
11.3.3;Dynamic Control Creation;136
11.4;The Page Class;138
11.4.1;Session, Application, and Cache;139
11.4.2;Request;139
11.4.3;Response;141
11.4.3.1;Moving Between Pages;143
11.4.3.2;HTML and URL Encoding;145
11.4.4;User;147
11.4.5;Trace;147
11.4.5.1;Application Tracing;151
11.4.5.2;Tracing with the Web Development Helper;153
11.4.6;Accessing the HTTP Context in Another Class;153
11.5;Summary;154
12;CHAPTER 4 Server Controls;155
12.1;Types of Server Controls;155
12.1.1;The Server Control Hierarchy;156
12.2;HTML Server Controls;158
12.2.1;The HtmlControl Class;159
12.2.2;The HtmlContainerControl Class;159
12.2.3;The HtmlInputControl Class;160
12.2.4;The HTML Server Control Classes;160
12.2.5;Setting Style Attributes and Other Properties;162
12.2.6;Programmatically Creating Server Controls;163
12.2.7;Handling Server-Side Events;165
12.2.7.1;The ServerClick and ServerChange Events;166
12.3;Web Controls;168
12.3.1;The WebControl Base Class;169
12.3.2;Basic Web Control Classes;170
12.3.3;Units;173
12.3.4;Enumerations;174
12.3.5;Colors;174
12.3.6;Fonts;175
12.3.7;Focus;176
12.3.8;The Default Button;178
12.3.9;Scrollable Panels;178
12.3.10;Handling Web Control Events;179
12.3.10.1;The Click Event and the ImageButton Control;181
12.4;The List Controls;182
12.4.1;The Selectable List Controls;184
12.4.2;The BulletedList Control;187
12.5;Input Validation Controls;189
12.5.1;The Validation Controls;190
12.5.2;The Validation Process;191
12.5.3;The BaseValidator Class;192
12.5.4;The RequiredFieldValidator Control;194
12.5.5;The RangeValidator Control;194
12.5.6;The CompareValidator Control;195
12.5.7;The RegularExpressionValidator Control;195
12.5.8;The CustomValidator Control;199
12.5.9;The ValidationSummary Control;200
12.5.10;Using the Validators Programmatically;201
12.5.11;Validation Groups;202
12.6;Rich Controls;204
12.6.1;The AdRotator Control;205
12.6.2;The Calendar Control;207
12.7;Summary;209
13;CHAPTER 5 ASP.NET Applications;210
13.1;Anatomy of an ASP.NET Application;210
13.1.1;The Application Domain;210
13.1.2;Application Lifetime;212
13.1.3;Application Updates;212
13.1.4;Application Directory Structure;213
13.2;The global.asax Application File;214
13.2.1;Application Events;216
13.2.2;Demonstrating Application Events;218
13.3;ASP.NET Configuration;219
13.3.1;The machine.config File;220
13.3.1.1;;220
13.3.2;The web.config File;222
13.3.2.1;Configuration Inheritance;224
13.3.2.2;Using Elements;225
13.3.3;;226
13.3.4;;227
13.3.5;;228
13.3.6;;229
13.3.7;Reading and Writing Configuration Sections Programmatically;230
13.3.8;The Website Administration Tool (WAT);233
13.3.9;Extending the Configuration File Structure;235
13.3.9.1;Creating a Section Class;235
13.3.9.2;Registering a Section Class;237
13.3.10;Encrypting Configuration Sections;239
13.3.10.1;Programmatic Encryption;240
13.3.10.2;Command-Line Encryption;241
13.4;.NET Components;241
13.4.1;Creating a Component;242
13.4.2;Using a Component Through the App_Code Directory;244
13.4.3;Using a Component Through the Bin Directory;245
13.5;Extending the HTTP Pipeline;248
13.5.1;HTTP Handlers;248
13.5.2;Creating a Custom HTTP Handler;250
13.5.3;Configuring a Custom HTTP Handler;251
13.5.4;Using Configuration-Free HTTP Handlers;252
13.5.5;Creating an Advanced HTTP Handler;253
13.5.6;Creating an HTTP Handler for Non-HTML Content;255
13.5.7;HTTP Modules;258
13.5.8;Creating a Custom HTTP Module;260
13.6;Summary;263
14;CHAPTER 6 State Management;264
14.1;ASP.NET State Management;265
14.2;View State;267
14.2.1;A View State Example;268
14.2.2;Storing Objects in View State;270
14.2.3;Assessing View State;272
14.2.4;Selectively Disabling View State;273
14.2.5;View State Security;275
14.3;Transferring Information Between Pages;276
14.3.1;The Query String;276
14.3.1.1;Using the Query String;277
14.3.1.2;URL Encoding;278
14.3.2;Cross-Page Posting;278
14.3.2.1;Getting Page-Specific Information;280
14.3.2.2;Performing Cross-Page Posting in Any Event Handler;281
14.3.2.3;The IsPostBack and IsCrossPagePostBack Properties;282
14.3.2.4;Cross-Page Posting and Validation;283
14.4;Cookies;285
14.5;Session State;286
14.5.1;Session Architecture;286
14.5.2;Using Session State;288
14.5.3;Configuring Session State;289
14.5.3.1;Mode;290
14.5.3.2;Compression;294
14.5.3.3;Cookieless;295
14.5.3.4;Timeout;296
14.5.4;Securing Session State;296
14.6;Application State;297
14.6.1;Shared Application Variables;299
14.7;Summary;301
15;PART II Data Access;302
16;CHAPTER 7 ADO.NET Fundamentals;303
16.1;The ADO.NET Architecture;304
16.1.1;ADO.NET Data Providers;304
16.1.2;Standardization in ADO.NET;306
16.1.3;Fundamental ADO.NET Classes;307
16.2;The Connection Class;308
16.2.1;Connection Strings;308
16.2.1.1;User Instance Connections;310
16.2.2;Testing a Connection;311
16.2.3;Connection Pooling;313
16.3;The Command and DataReader Classes;315
16.3.1;Command Basics;315
16.3.2;The DataReader Class;316
16.3.3;The ExecuteReader() Method and the DataReader;317
16.3.3.1;Null Values;320
16.3.3.2;CommandBehavior;320
16.3.3.3;Processing Multiple Result Sets;321
16.3.4;The ExecuteScalar() Method;323
16.3.5;The ExecuteNonQuery() Method;324
16.3.6;SQL Injection Attacks;324
16.3.7;Using Parameterized Commands;327
16.3.8;Calling Stored Procedures;329
16.4;Transactions;332
16.4.1;Transactions and ASP.NET Applications;333
16.4.1.1;Stored Procedure Transactions;334
16.4.1.2;Client-Initiated ADO.NET Transactions;336
16.4.2;Isolation Levels;338
16.4.3;Savepoints;340
16.5;Provider-Agnostic Code;341
16.5.1;Creating the Factory;341
16.5.2;Create Objects with Factory;342
16.5.3;A Query with Provider-Agnostic Code;343
16.6;Summary;345
17;CHAPTER 8 Data Components and the DataSet;346
17.1;Building a Data Access Component;346
17.1.1;The Data Package;347
17.1.2;The Stored Procedures;349
17.1.3;The Data Utility Class;350
17.1.3.1;Concurrency Strategies;356
17.1.4;Testing the Database Component;357
17.2;Disconnected Data;359
17.2.1;Web Applications and the DataSet;360
17.2.2;XML Integration;361
17.3;The DataSet;361
17.4;The DataAdapter Class;363
17.4.1;Filling a DataSet;364
17.4.2;Working with Multiple Tables and Relationships;366
17.4.3;Searching for Specific Rows;369
17.4.4;Using the DataSet in a Data Access Class;370
17.4.5;Data Binding;371
17.5;The DataView Class;371
17.5.1;Sorting with a DataView;372
17.5.2;Filtering with a DataView;374
17.5.3;Advanced Filtering with Relationships;376
17.5.4;Calculated Columns;377
17.6;Summary;379
18;CHAPTER 9 Data Binding;380
18.1;Basic Data Binding;380
18.1.1;Single-Value Binding;381
18.1.2;Other Types of Expressions;383
18.1.2.1;Custom Expression Builders;384
18.1.3;Repeated-Value Binding;388
18.1.3.1;Binding to a DataReader;392
18.1.3.2;The Rich Data Controls;394
18.1.3.3;Binding to a DataView;396
18.2;Data Source Controls;396
18.2.1;The Page Life Cycle with Data Binding;397
18.3;The SqlDataSource;398
18.3.1;Selecting Records;399
18.3.1.1;Data Binding “Under the Hood”;401
18.3.2;Parameterized Commands;402
18.3.2.1;Stored Procedures;404
18.3.2.2;More Parameter Types;404
18.3.3;Handling Errors;407
18.3.4;Updating Records;408
18.3.4.1;Strict Concurrency Checking;409
18.3.4.2;Updating with Stored Procedures;411
18.3.5;Deleting Records;412
18.3.6;Inserting Records;413
18.3.7;Disadvantages of the SqlDataSource;413
18.4;The ObjectDataSource;414
18.4.1;Selecting Records;415
18.4.1.1;Using a Parameterized Constructor;417
18.4.1.2;Using Method Parameters;419
18.4.2;Updating Records;421
18.4.3;Updating with a Data Object;422
18.4.3.1;Dealing with Nonstandard Method Signatures;422
18.4.3.2;Handling Identity Values in an Insert;423
18.5;The Limits of the Data Source Controls;426
18.5.1;The Problem;426
18.5.2;Adding the Extra Items;427
18.5.3;Handling the Extra Options with the SqlDataSource;428
18.5.4;Handling the Extra Options with the ObjectDataSource;429
18.6;Summary;429
19;CHAPTER 10 Rich Data Controls;430
19.1;The GridView;431
19.1.1;Defining Columns;431
19.2;Formatting the GridView;435
19.2.1;Formatting Fields;436
19.2.2;Styles;437
19.2.2.1;Defining Styles;438
19.2.2.2;Configuring Styles with Visual Studio;440
19.2.3;Formatting-Specific Values;441
19.3;GridView Row Selection;443
19.3.1;Using Selection to Create a Master-Details Form;444
19.3.2;The SelectedIndexChanged Event;446
19.3.3;Using a Data Field As a Select Button;447
19.4;Sorting the GridView;447
19.4.1;Sorting with the SqlDataSource;448
19.4.2;Sorting with the ObjectDataSource;448
19.4.3;Sorting and Selection;450
19.4.4;Advanced Sorting;451
19.5;Paging the GridView;452
19.5.1;Automatic Paging;452
19.5.2;Paging and Selection;454
19.5.3;Custom Pagination with the ObjectDataSource;454
19.5.3.1;Counting the Records;455
19.5.3.2;A Stored Procedure to Get Paged Records;455
19.5.3.3;The Paged Selection Method;456
19.5.4;Customizing the Pager Bar;457
19.6;GridView Templates;459
19.6.1;Using Multiple Templates;461
19.6.2;Editing Templates in Visual Studio;462
19.6.3;Binding to a Method;463
19.6.4;Handling Events in a Template;465
19.6.5;Editing with a Template;466
19.6.5.1;Editing with Advanced Controls;468
19.6.5.2;Editing Without a Command Column;470
19.6.6;Client IDs in Templates;472
19.7;The ListView;473
19.7.1;Grouping;477
19.7.2;Paging;479
19.8;The DetailsView and FormView;480
19.8.1;The DetailsView;481
19.8.1.1;Defining Fields;482
19.8.1.2;Record Operations;482
19.8.2;The FormView;483
19.9;Advanced Grids;485
19.9.1;Summaries in the GridView;485
19.9.2;A Parent/Child View in a Single Table;487
19.9.3;Editing a Field Using a Lookup Table;490
19.9.4;Serving Images from a Database;492
19.9.4.1;Displaying Binary Data;493
19.9.4.2;Reading Binary Data Efficiently;494
19.9.4.3;Integrating Images with Other Content;495
19.9.5;Detecting Concurrency Conflicts;498
19.10;Summary;503
20;CHAPTER 11 Caching and Asynchronous Pages;504
20.1;Understanding ASP.NET Caching;504
20.2;Output Caching;505
20.2.1;Declarative Output Caching;505
20.2.2;Caching and the Query String;507
20.2.3;Caching with Specific Query String Parameters;508
20.2.4;Custom Caching Control;508
20.2.5;Caching with the HttpCachePolicy Class;510
20.2.6;Post-Cache Substitution and Fragment Caching;511
20.2.6.1;Fragment Caching;511
20.2.6.2;Post-Cache Substitution;511
20.2.7;Cache Profiles;513
20.2.8;Cache Configuration;514
20.2.9;Output Caching Extensibility;515
20.2.9.1;Building a Custom Cache Provider;515
20.2.9.2;Using a Custom Cache Provider;519
20.3;Data Caching;520
20.3.1;Adding Items to the Cache;520
20.3.2;A Simple Cache Test;523
20.3.3;Cache Priorities;524
20.3.4;Caching with the Data Source Controls;525
20.3.4.1;Caching with SqlDataSource;526
20.3.4.2;Caching with ObjectDataSource;528
20.4;Cache Dependencies;528
20.4.1;File and Cache Item Dependencies;529
20.4.2;Aggregate Dependencies;530
20.4.3;The Item Removed Callback;531
20.4.4;Understanding SQL Cache Notifications;533
20.4.5;How Cache Notifications Work;534
20.4.6;Enabling Notifications;535
20.4.7;Creating the Cache Dependency;536
20.5;Custom Cache Dependencies;537
20.5.1;A Basic Custom Cache Dependency;537
20.5.2;A Custom Cache Dependency Using Message Queues;538
20.6;Asynchronous Pages;541
20.6.1;Creating an Asynchronous Page;542
20.6.2;Querying Data in an Asynchronous Page;544
20.6.3;Handling Errors;547
20.6.4;Using Caching with Asynchronous Tasks;550
20.6.5;Multiple Asynchronous Tasks and Timeouts;552
20.7;Summary;554
21;CHAPTER 12 Files and Streams;555
21.1;Working with the File System;555
21.1.1;The Directory and File Classes;556
21.1.2;The DirectoryInfo and FileInfo Classes;558
21.1.3;The DriveInfo Class;561
21.1.4;Working with Attributes;562
21.1.5;Filter Files with Wildcards;564
21.1.6;Retrieving File Version Information;565
21.1.7;The Path Class;566
21.1.8;A File Browser;569
21.2;Reading and Writing Files with Streams;574
21.2.1;Text Files;575
21.2.2;Binary Files;577
21.2.3;Uploading Files;578
21.2.4;Making Files Safe for Multiple Users;580
21.2.4.1;Creating Unique Filenames;581
21.2.4.2;Locking File Access Objects;584
21.2.5;Compression;585
21.3;Serialization;586
21.4;Summary;589
22;CHAPTER 13 LINQ;590
22.1;LINQ Basics;590
22.1.1;Deferred Execution;592
22.1.2;How LINQ Works;593
22.1.3;LINQ Expressions;594
22.1.3.1;Projections;594
22.1.3.2;Filtering and Sorting;597
22.1.3.3;Grouping and Aggregation;598
22.1.4;LINQ Expressions “Under the Hood”;602
22.1.4.1;Extension Methods;602
22.1.4.2;Lambda Expressions;603
22.1.4.3;Multipart Expressions;604
22.2;LINQ to DataSet;604
22.2.1;Typed DataSets;607
22.2.2;Null Values;607
22.3;LINQ to Entities;608
22.3.1;Generating the Data Model;609
22.3.2;The Data Model Classes;609
22.3.2.1;The Derived Object Context Class;610
22.3.2.2;The Entity Classes;611
22.3.3;Entity Relationships;613
22.3.3.1;One-to-Many Relationships;613
22.3.3.2;One-to-One Relationships;614
22.3.4;Querying Stored Procedures;614
22.3.5;LINQ to Entities Queries “Under the Hood”;616
22.3.5.1;Filtering Too Late;617
22.3.5.2;Using Lazy and Eager Data Loading;618
22.3.5.3;Using Explicit Loading;620
22.3.5.4;Compiling Queries;621
22.4;Database Operations;622
22.4.1;Inserts;622
22.4.1.1;Creating Partially Populated Entity Classes;624
22.4.1.2;Inserting Associated Entities;624
22.4.2;Updates;626
22.4.3;Deletes;626
22.4.4;Managing Concurrency;627
22.4.5;Handling Concurrency Conflicts;628
22.5;The EntityDataSource Control;634
22.5.1;Displaying Data;634
22.5.2;Getting Related Data;638
22.5.3;Editing Data;639
22.5.4;Validation;640
22.6;Using the QueryExtender Control;642
22.6.1;Using a SearchExpression;642
22.6.2;Using a RangeExpression;643
22.6.3;Using a PropertyExpression;644
22.6.4;Using a MethodExpression;645
22.7;Summary;646
23;CHAPTER 14 XML;647
23.1;When Does Using XML Make Sense?;647
23.2;An Introduction to XML;648
23.2.1;The Advantages of XML;649
23.2.2;Well-Formed XML;650
23.2.3;XML Namespaces;650
23.2.4;XML Schemas;652
23.3;Stream-Based XML Processing;654
23.3.1;Writing XML Files;654
23.3.2;Reading XML Files;658
23.4;In-Memory XML Processing;661
23.4.1;The XmlDocument;662
23.4.2;The XPathNavigator;665
23.4.3;The XDocument;668
23.4.3.1;Creating XML with XDocument;668
23.4.3.2;Reading XML with XDocument;670
23.4.3.3;Namespaces;672
23.5;Searching XML Content;674
23.5.1;Searching with XmlDocument;674
23.5.2;Searching XmlDocument with XPath;677
23.5.3;Searching XDocument with LINQ;679
23.6;Validating XML Content;681
23.6.1;A Basic Schema;681
23.6.2;Validating with XmlDocument;682
23.6.3;Validating with XDocument;684
23.7;Transforming XML Content;685
23.7.1;A Basic Stylesheet;685
23.7.2;Using XslCompiledTransform;687
23.7.3;Using the Xml Control;688
23.7.4;Transforming XML with LINQ to XML;689
23.8;XML Data Binding;691
23.8.1;Nonhierarchical Binding;692
23.8.2;Using XPath;694
23.8.3;Nested Grids;697
23.8.4;Hierarchical Binding with the TreeView;698
23.8.5;Using XSLT;700
23.8.6;Binding to XML Content from Other Sources;702
23.8.7;Updating XML Through the XmlDataSource;703
23.9;XML and the ADO.NET DataSet;703
23.9.1;Converting the DataSet to XML;704
23.10;Summary;705
24;PART III Building ASP.NET Websites;707
25;CHAPTER 15 User Controls;708
25.1;User Control Basics;708
25.1.1;Creating a Simple User Control;709
25.1.2;Converting a Page to a User Control;711
25.2;Adding Code to a User Control;711
25.2.1;Handling Events;711
25.2.2;Adding Properties;712
25.2.3;Using Custom Objects;715
25.2.4;Adding Events;718
25.2.5;Exposing the Inner Web Control;721
25.3;Dynamically Loading User Controls;722
25.3.1;Portal Frameworks;723
25.4;Partial Page Caching;726
25.4.1;VaryByControl;727
25.4.2;Sharing Cached Controls;729
25.5;Summary;729
26;CHAPTER 16 Themes and Master Pages;730
26.1;Cascading Style Sheets;730
26.1.1;Creating a Stylesheet;730
26.1.2;Applying Stylesheet Rules;733
26.2;Themes;735
26.2.1;Theme Folders and Skins;736
26.2.2;Applying a Simple Theme;737
26.2.3;Handling Theme Conflicts;739
26.2.4;Creating Multiple Skins for the Same Control;740
26.2.5;Skins with Templates and Images;741
26.2.6;Using CSS in a Theme;743
26.2.7;Applying Themes Through a Configuration File;743
26.2.8;Applying Themes Dynamically;744
26.3;Standardizing Website Layout;746
26.4;Master Page Basics;746
26.4.1;A Simple Master Page;747
26.4.2;A Simple Content Page;749
26.4.3;Default Content;752
26.4.4;Master Pages with Tables and CSS Layout;752
26.4.5;Master Pages and Relative Paths;755
26.4.6;Applying Master Pages Through a Configuration File;756
26.5;Advanced Master Pages;757
26.5.1;Interacting with the Master Page Class;757
26.5.2;Dynamically Setting a Master Page;758
26.5.3;Nesting Master Pages;759
26.6;Summary;761
27;CHAPTER 17 Website Navigation;762
27.1;Pages with Multiple Views;763
27.1.1;The MultiView Control;763
27.1.2;The Wizard Control;767
27.1.2.1;Wizard Steps;768
27.1.2.2;Wizard Events;771
27.1.2.3;Wizard Styles, Templates, and Layout;773
27.2;Site Maps;776
27.2.1;Defining a Site Map;777
27.2.2;Binding to a Site Map;779
27.2.3;Breadcrumbs;780
27.2.4;Showing a Portion of the Site Map;782
27.2.4.1;Skipping the Root Node;783
27.2.4.2;Starting from the Current Node;783
27.2.4.3;Starting from a Specific Node;784
27.2.5;The Site Map Objects;786
27.2.6;Adding Custom Site Map Information;788
27.2.7;Creating a Custom SiteMapProvider;789
27.2.7.1;Storing Site Map Information in a Database;789
27.2.7.2;Creating the Site Map Provider;790
27.2.7.3;Adding Sorting;795
27.2.7.4;Adding Caching;795
27.2.8;Security Trimming;797
27.3;URL Mapping and Routing;799
27.3.1;URL Mapping;799
27.3.2;URL Routing;800
27.4;The TreeView Control;801
27.4.1;The TreeNode;802
27.4.2;Populating Nodes on Demand;805
27.4.3;TreeView Styles;807
27.4.3.1;Applying Styles to Node Types;809
27.4.3.2;Applying Styles to Node Levels;809
27.4.3.3;TreeView Images;810
27.5;The Menu Control;811
27.5.1;Menu Styles;814
27.5.2;Menu Templates;816
27.6;Summary;818
28;CHAPTER 18 Website Deployment;819
28.1;Installing and Configuring IIS;819
28.1.1;Installing IIS 7;819
28.1.2;Managing IIS 7;821
28.2;Deploying a Website;823
28.2.1;Deploying by Copying Files;824
28.2.1.1;Preparing IIS;824
28.2.1.2;The Website;825
28.2.1.3;Deploying the Website;825
28.2.1.4;Configuring the Deployment;827
28.2.2;Using Web Deployment;828
28.2.2.1;Preparing IIS;829
28.2.2.2;The Website;829
28.2.2.3;Transforming web.config;830
28.2.2.4;Publishing Databases;834
28.2.2.5;Deploying the Website;835
28.2.3;Using FTP Deployment;837
28.2.3.1;Preparing IIS;837
28.2.3.2;The Website;838
28.2.3.3;Deploying the Website;839
28.2.3.4;Variation: Deploying a Project-less Website;841
28.3;Managing a Website;844
28.3.1;Creating a New Site;844
28.3.2;Creating Virtual Directories;845
28.3.3;Using the VirtualPathProvider;846
28.3.4;Using Application Pools;850
28.3.4.1;Creating a New Application Pool;851
28.3.4.2;Assigning an Application to an Application Pool;852
28.3.4.3;Starting and Stopping an Application Pool;852
28.3.4.4;Using Side-by-Side Execution;852
28.3.5;Using Application Warm-Up;853
28.3.5.1;Preparing IIS 7;853
28.3.5.2;Configuring Application Warm-Up;853
28.4;Extending the Integrated Pipeline;854
28.4.1;Creating the Handler;855
28.4.2;Deploying the Handler;855
28.4.3;Configuring the Handler;855
28.4.4;Testing the Handler;857
28.5;Summary;857
29;PART IV Security;858
30;CHAPTER 19 The ASP.NET Security Model;859
30.1;What It Means to Create Secure Software;859
30.1.1;Understanding Potential Threats;859
30.1.2;Secure Coding Guidelines;860
30.1.3;Understanding Gatekeepers;861
30.2;Understanding the Levels of Security;862
30.2.1;Authentication;863
30.2.1.1;Impersonation;863
30.2.2;Authorization;863
30.2.3;Confidentiality and Integrity;864
30.2.4;Pulling It All Together;865
30.3;Understanding Secure Sockets Layer;866
30.3.1;Understanding Certificates;867
30.3.2;Understanding SSL;867
30.3.3;Configuring SSL in IIS 7.x;869
30.3.3.1;Configuring Bindings for SSL;871
30.3.3.2;Encoding Information with SSL;872
30.4;Summary;873
31;CHAPTER 20 Forms Authentication;874
31.1;Introducing Forms Authentication;874
31.1.1;Why Use Forms Authentication?;875
31.1.1.1;Controlling the Authentication Code;876
31.1.1.2;Controlling the Appearance of the Login Form;876
31.1.1.3;Working with a Range of Browsers;876
31.1.1.4;Storing User Information;876
31.1.2;Why Would You Not Use Forms Authentication?;877
31.1.2.1;Creating Your Own Login Interface;877
31.1.2.2;Maintaining User Details;877
31.1.2.3;Intercepting Network Traffic;878
31.1.3;Why Not Implement Cookie Authentication Yourself?;878
31.1.3.1;Keeping the Authentication Cookie Secure;878
31.1.3.2;Forms Authentication Is Well Tested;879
31.1.3.3;Integrating with the ASP.NET Security Framework;879
31.1.4;The Forms Authentication Classes;879
31.2;Implementing Forms Authentication;880
31.2.1;Configuring Forms Authentication;880
31.2.1.1;Credentials Store in web.config;883
31.2.2;Denying Access to Anonymous Users;884
31.2.3;Creating a Custom Login Page;885
31.2.3.1;Logging Out;889
31.2.3.2;Hashing Passwords in web.config;890
31.2.3.3;Cookieless Forms Authentication;891
31.2.4;Custom Credentials Store;892
31.2.5;Persistent Cookies in Forms Authentication;893
31.3;IIS 7.x and Forms Authentication;894
31.4;Summary;900
32;CHAPTER 21 Membership;901
32.1;Introducing the ASP.NET Membership API;901
32.2;Using the Membership API;904
32.2.1;Configuring Forms Authentication;905
32.2.2;Creating the Data Store;906
32.2.2.1;Database Scripts for ASP.NET Services;910
32.2.2.2;File-Based SQL Server Store;912
32.2.3;Configuring Connection String and Membership Provider;912
32.2.4;Creating and Authenticating Users;916
32.3;Using the Security Controls;918
32.3.1;The Login Control;919
32.3.1.1;Templates and the Login Control;925
32.3.1.2;Programming the Login Control;927
32.3.2;The LoginStatus Control;930
32.3.3;The LoginView Control;931
32.3.4;The PasswordRecovery Control;932
32.3.4.1;PasswordRecovery Templates;934
32.3.5;The ChangePassword Control;937
32.3.6;The CreateUserWizard Control;938
32.4;Configuring Membership in IIS 7.x;943
32.4.1;Configuring Providers and Users;943
32.4.2;Using the Membership API with Other Applications;945
32.5;Using the Membership Class;947
32.5.1;Retrieving Users from the Store;948
32.5.2;Updating Users in the Store;951
32.5.3;Creating and Deleting Users;951
32.5.4;Validating Users;952
32.6;Summary;952
33;CHAPTER 22 Windows Authentication;954
33.1;Introducing Windows Authentication;954
33.1.1;Why Use Windows Authentication?;954
33.1.2;Why Would You Not Use Windows Authentication?;956
33.1.3;Mechanisms for Windows Authentication;956
33.1.3.1;Basic Authentication;957
33.1.3.2;Digest Authentication;958
33.1.3.3;Integrated Windows Authentication;959
33.2;Implementing Windows Authentication;963
33.2.1;Configuring IIS 7.x;963
33.2.2;Configuring ASP.NET;965
33.2.3;Deeper Into the IIS 7.x Pipeline;965
33.2.4;Denying Access to Anonymous Users;969
33.2.5;Accessing Windows User Information;970
33.2.5.1;The WindowsPrincipal Class;971
33.2.5.2;The WindowsIdentity Class;972
33.2.5.3;IdentityReference and Role Information;974
33.3;Impersonation;976
33.3.1;Impersonation and Delegation in Windows;976
33.3.2;Configured Impersonation;978
33.3.3;Programmatic Impersonation;979
33.3.3.1;Getting a Token;979
33.3.3.2;Performing the Impersonation;980
33.4;Summary;982
34;CHAPTER 23 Authorization and Roles;983
34.1;URL Authorization;983
34.1.1;Authorization Rules;984
34.1.1.1;Controlling Access for Specific Users;985
34.1.1.2;Controlling Access to Specific Directories;987
34.1.1.3;Controlling Access to Specific Files;988
34.1.1.4;Controlling Access for Specific Roles;988
34.2;File Authorization;990
34.3;Authorization Checks in Code;990
34.3.1;Using the IsInRole() Method;990
34.3.2;Using the PrincipalPermission Class;991
34.3.2.1;Merging PrincipalPermission Objects;992
34.3.2.2;Using the PrincipalPermission Attribute;992
34.4;Using the Roles API for Role-Based Authorization;993
34.4.1;Using the LoginView Control with Roles;1001
34.4.2;Accessing Roles Programmatically;1002
34.4.3;Using the Roles API with Windows Authentication;1004
34.5;Authorization and Roles in IIS 7.x;1006
34.5.1;Authorization with ASP.NET Roles in IIS 7.x;1009
34.5.2;Managing ASP.NET Roles with IIS 7.x;1011
34.6;Summary;1012
35;CHAPTER 24 Profiles;1013
35.1;Understanding Profiles;1013
35.1.1;Profile Performance;1013
35.1.2;How Profiles Store Data;1014
35.1.3;Profiles and Authentication;1015
35.1.4;Profiles vs. Custom Data Components;1016
35.2;Using the SqlProfileProvider;1016
35.2.1;Creating the Profile Tables;1017
35.2.2;Configuring the Provider;1019
35.2.3;Defining Profile Properties;1020
35.2.4;Using Profile Properties;1021
35.2.5;Profile Serialization;1023
35.2.6;Profile Groups;1025
35.2.7;Profiles and Custom Data Types;1026
35.2.7.1;Custom Type Serialization;1027
35.2.7.2;Automatic Saves;1028
35.2.8;The Profiles API;1030
35.2.9;Anonymous Profiles;1033
35.2.9.1;Migrating Anonymous Profiles;1034
35.3;Custom Profile Providers;1035
35.3.1;The Custom Profile Provider Classes;1035
35.3.2;Designing the FactoredProfileProvider;1038
35.3.3;Coding the FactoredProfileProvider;1039
35.3.3.1;Initialization;1039
35.3.3.2;Reading Profile Information;1041
35.3.3.3;Updating Profile Information;1043
35.3.4;Testing the FactoredProfileProvider;1044
35.4;Summary;1047
36;CHAPTER 25 Cryptography;1048
36.1;Encrypting Data: Confidentiality Matters;1048
36.2;The .NET Cryptography Namespace;1049
36.3;Understanding the .NET Cryptography Classes;1052
36.3.1;Symmetric Encryption Algorithms;1054
36.3.2;Asymmetric Encryption;1055
36.3.3;The Abstract Encryption Classes;1056
36.3.4;The ICryptoTransform Interface;1056
36.3.5;The CryptoStream Class;1057
36.4;Encrypting Sensitive Data;1058
36.4.1;Managing Secrets;1058
36.4.2;Using Symmetric Algorithms;1060
36.4.2.1;Using the SymmetricEncryptionUtility Class;1065
36.4.3;Using Asymmetric Algorithms;1067
36.4.4;Encrypting Sensitive Data in a Database;1071
36.5;Encrypting the Query String;1076
36.5.1;Wrapping the Query String;1077
36.5.2;Creating a Test Page;1080
36.6;Summary;1082
37;CHAPTER 26 Custom Membership Providers;1083
37.1;Architecture of Custom Providers;1083
37.2;Basic Steps for Creating Custom Providers;1085
37.2.1;Overall Design of the Custom Provider;1085
37.2.2;Designing and Implementing the Custom Store;1087
37.2.3;Implementing the Provider Classes;1094
37.2.3.1;Creating Users and Adding Them to the Store;1100
37.2.3.2;Validating Users on Login;1104
37.2.3.3;Using Salted Password Hashes;1107
37.2.3.4;The Remaining Functions of the Provider;1109
37.2.3.5;Implementing the XmlRoleProvider;1111
37.2.4;Using the Custom Provider Classes;1118
37.2.4.1;Debugging Using the WAT;1119
37.2.4.2;Using Custom Providers with IIS 7.x;1120
37.3;Summary;1122
38;PART V Advanced User Interface;1123
39;CHAPTER 27 Custom Server Controls;1124
39.1;Custom Server Control Basics;1124
39.1.1;Creating a Bare-Bones Custom Control;1125
39.1.2;Using a Custom Control;1127
39.1.3;Custom Controls in the Toolbox;1128
39.1.4;Creating a Web Control That Supports Style Properties;1130
39.1.5;The Rendering Process;1134
39.2;Dealing with Different Browsers;1136
39.2.1;The HtmlTextWriter;1136
39.2.2;Browser Detection;1137
39.2.3;Browser Properties;1138
39.2.4;Overriding Browser Type Detection;1140
39.2.5;Adaptive Rendering;1141
39.3;Control State and Events;1142
39.3.1;View State;1142
39.3.2;Control State;1144
39.3.3;Postback Data and Change Events;1146
39.3.4;Triggering a Postback;1149
39.4;Extending Existing Web Controls;1151
39.4.1;Composite Controls;1151
39.4.2;Derived Controls;1154
39.4.2.1;Creating a Label for Specific Data;1154
39.5;Summary;1157
40;CHAPTER 28 Graphics, GDI+, and Charting;1158
40.1;The ImageMap Control;1158
40.1.1;Creating Hotspots;1159
40.1.2;Handling Hotspot Clicks;1160
40.1.3;A Custom Hotspot;1161
40.2;Drawing with GDI+;1164
40.2.1;Simple Drawing;1165
40.2.2;Image Format and Quality;1166
40.2.3;The Graphics Class;1168
40.2.4;Using a GraphicsPath;1171
40.2.5;Pens;1172
40.2.6;Brushes;1175
40.3;Embedding Dynamic Graphics in a Web Page;1177
40.3.1;Using the PNG Format;1178
40.3.2;Passing Information to Dynamic Images;1179
40.3.3;Custom Controls That Use GDI+;1182
40.3.3.1;The Custom Control Class;1183
40.3.3.2;The Rendering Page;1184
40.4;Using the Chart Control;1187
40.4.1;Creating a Basic Chart;1187
40.4.2;Populating a Chart with Data;1194
40.4.2.1;Binding to a Database Table;1194
40.4.2.2;Binding to a Object DataSource;1196
40.4.2.3;Binding to an XML File;1199
40.4.2.4;Binding to LINQ;1201
40.5;Summary;1202
41;CHAPTER 29 JavaScript and Ajax Techniques;1203
41.1;JavaScript Essentials;1203
41.1.1;The HTML Document Object Model;1204
41.1.2;Client-Side Events;1205
41.1.2.1;Adding JavaScript Attributes Declaratively;1207
41.1.2.2;The OnClientClick Property;1207
41.1.3;Script Blocks;1207
41.1.4;Manipulating HTML Elements;1209
41.1.5;Debugging JavaScript;1210
41.2;Basic JavaScript Examples;1213
41.2.1;Creating a JavaScript Page Processor;1213
41.2.2;Using JavaScript to Download Images Asynchronously;1217
41.2.3;Rendering Script Blocks;1222
41.3;Script Injection Attacks;1224
41.3.1;Request Validation;1224
41.3.2;Disabling Request Validation;1225
41.3.3;Extending Request Validation;1227
41.4;Custom Controls with JavaScript;1229
41.4.1;Pop-Up Windows;1230
41.4.2;Rollover Buttons;1235
41.5;Frames;1239
41.5.1;Frame Navigation;1239
41.5.2;Inline Frames;1241
41.6;Understanding Ajax;1243
41.6.1;The XMLHttpRequest Object;1244
41.6.1.1;Sending a Request;1244
41.6.1.2;Handling the Response;1245
41.6.2;An Ajax Example;1245
41.7;Using Ajax with Client Callbacks;1250
41.7.1;Creating a Client Callback;1251
41.7.1.1;Building the Basic Page;1252
41.7.1.2;Implementing the Callback;1252
41.7.1.3;Writing the Client-Side Script;1254
41.7.1.4;Disabling Event Validation;1256
41.7.2;Client Callbacks “Under the Hood”;1258
41.7.3;Client Callbacks in Custom Controls;1258
41.7.3.1;The DynamicPanel;1259
41.7.3.2;The DynamicPanelRefreshLink;1262
41.7.3.3;The Client Page;1263
41.8;Summary;1264
42;CHAPTER 30 ASP.NET AJAX;1265
42.1;Introducing ASP.NET AJAX;1265
42.1.1;ASP.NET AJAX on the Client: The Script Libraries;1266
42.1.2;ASP.NET AJAX on the Server: The ScriptManager;1267
42.2;Server Callbacks;1268
42.2.1;Web Services in ASP.NET AJAX;1268
42.2.1.1;Creating the Web Service;1270
42.2.1.2;Creating the Web Method;1271
42.2.1.3;Calling the Web Service;1274
42.2.2;Placing a Web Method in a Page;1277
42.2.3;ASP.NET AJAX Application Services;1278
42.2.3.1;Authentication Service;1279
42.2.3.2;Role Service;1281
42.2.3.3;Profile Service;1284
42.3;ASP.NET AJAX Server Controls;1286
42.3.1;Partial Rendering with the UpdatePanel;1287
42.3.1.1;Handling Errors;1289
42.3.1.2;Conditional Updates;1290
42.3.1.3;Interrupted Updates;1291
42.3.1.4;Triggers;1292
42.3.1.5;Optimizing the UpdatePanel;1293
42.3.2;Timed Refreshes with the Timer;1294
42.3.3;Time-Consuming Updates with UpdateProgress;1295
42.3.3.1;Cancellation;1297
42.3.4;Managing Browser History;1298
42.3.4.1;Adding History Points;1299
42.3.4.2;Restoring Page State;1301
42.3.4.3;How State Is Stored in the URL;1301
42.4;Deeper into the Client Libraries;1302
42.4.1;Understanding the Client Model;1302
42.4.2;Object-Oriented Programming in JavaScript;1303
42.4.2.1;Closures;1304
42.4.2.2;Prototypes;1306
42.4.2.3;Registering Classes with ASP.NET AJAX;1307
42.4.2.4;Base Types;1308
42.4.2.5;Namespaces;1309
42.4.2.6;Inheritance;1310
42.4.2.7;Interfaces;1311
42.4.3;The Web-Page Framework;1312
42.4.3.1;The Application Class;1312
42.4.3.2;The PageRequestManager Class;1313
42.4.3.3;A Client-Side AJAX Control;1314
42.5;Control Extenders;1317
42.5.1;Installing the ASP.NET AJAX Control Toolkit;1318
42.5.2;The AutoCompleteExtender;1319
42.5.3;The ASP.NET AJAX Control Toolkit;1323
42.6;Summary;1328
43;CHAPTER 31 Portals with Web Part Pages;1330
43.1;Typical Portal Pages;1331
43.2;Basic Web Part Pages;1332
43.2.1;Creating the Page Design;1333
43.2.2;WebPartManager and WebPartZone Controls;1334
43.2.3;Adding Web Parts to the Page;1336
43.2.4;Customizing the Page;1340
43.3;Creating Web Parts;1342
43.3.1;Simple Web Part Tasks;1343
43.3.1.1;Implementing the IWebPart Interface;1348
43.3.2;Developing Advanced Web Parts;1352
43.3.2.1;Before You Start: Creating Typed DataSets;1353
43.3.2.2;The Custom WebPart’s Skeleton;1354
43.3.2.3;Initializing the Web Part;1355
43.3.2.4;Loading Data and Processing Events;1356
43.3.2.5;The Final Rendering;1358
43.3.2.6;More Customization Steps;1359
43.3.2.7;Using the Web Part;1360
43.3.3;Web Part Editors;1361
43.3.3.1;Creating a Custom Editor;1364
43.3.4;Connecting Web Parts;1367
43.3.4.1;Defining the Communication Contract;1369
43.3.4.2;Implementing the Provider Web Part;1369
43.3.4.3;Creating the Consumer Web Part;1371
43.3.4.4;Static Connections Between Web Parts;1373
43.3.4.5;Dynamically Configuring Connection Points;1374
43.3.4.6;Multiple Connection Points;1375
43.3.5;Custom Verbs and Web Parts;1376
43.3.6;User Controls and Advanced Web Parts;1377
43.3.7;Uploading Web Parts Dynamically;1380
43.3.8;Authorizing Web Parts;1386
43.3.9;Final Tasks for Personalization;1387
43.3.9.1;Clearing Personalization;1387
43.4;Summary;1388
44;CHAPTER 32 MVC;1389
44.1;Choosing Between MVC and Web Forms;1389
44.2;Creating a Basic MVC Application;1390
44.2.1;Creating the Model;1390
44.2.2;Creating the Controller;1391
44.2.3;Creating the Index View;1392
44.2.4;Testing the (Incomplete) Application;1393
44.2.5;Completing the Controller and Views;1394
44.2.6;Modifying the Site.Master File;1397
44.3;Extending the Basic MVC Application;1397
44.3.1;Configuring Routing;1397
44.3.2;Adding Error Handling;1399
44.3.3;Adding Authentication;1401
44.3.4;Consolidating Data Store Access;1402
44.3.5;Adding Support for Foreign Key Constraints;1405
44.4;Customizing Views;1405
44.4.1;Modifying the View;1406
44.4.2;Adding View Data;1408
44.5;Adding to the Model;1410
44.6;Validating Data;1415
44.6.1;Performing Basic Validation;1416
44.6.2;Adding Validation Annotations;1418
44.7;Using Action Results;1421
44.7.1;Returning JSON Data;1422
44.7.2;Calling Another Controller Method;1423
44.8;Summary;1425
45;CHAPTER 33 Dynamic Data;1426
45.1;Creating a Dynamic Data Application;1426
45.1.1;Creating the Dynamic Data Site;1426
45.1.2;Exploring the Dynamic Data Site;1429
45.2;Understanding the Anatomy of a Dynamic Data Project;1432
45.3;Customizing a Dynamic Data Site;1433
45.3.1;Customizing with Templates;1433
45.3.1.1;Editing the Default Templates;1433
45.3.1.2;Creating a Custom Page Template;1434
45.3.1.3;Using Entity Templates;1435
45.3.1.4;Customizing Field Templates;1440
45.3.2;Customizing with Routes;1443
45.3.2.1;Understanding Routes;1443
45.3.2.2;Switching to Single-Page Editing;1448
45.3.2.3;Using Different Templates for Tables;1449
45.3.3;Customizing with Metadata;1453
45.3.3.1;Creating a Metadata Class;1453
45.3.3.2;Changing Display Names;1454
45.3.3.3;Changing Visibility;1457
45.3.3.4;Customizing Field Formatting;1459
45.3.3.5;Using a Custom Field Template;1461
45.3.4;Customizing Validation;1462
45.3.4.1;Requiring a Field Value;1462
45.3.4.2;Specifying a Valid Range;1463
45.3.4.3;Customizing Validation Using Extensibility Methods;1465
45.4;Summary;1467
46;CHAPTER 34 Silverlight;1468
46.1;Understanding Silverlight;1469
46.1.1;Silverlight vs. Flash;1470
46.1.2;Silverlight System Requirements;1472
46.2;Creating a Silverlight Solution;1473
46.2.1;Silverlight Compilation;1474
46.2.2;The Entry Page;1476
46.3;Creating a Silverlight Project;1480
46.3.1;Designing a Silverlight Page;1481
46.3.2;Understanding XAML;1485
46.3.3;Setting Properties;1487
46.3.4;The XAML Code-Behind;1488
46.3.5;Handling Events;1490
46.3.6;Browsing the Silverlight Class Libraries;1491
46.4;Layout;1492
46.4.1;The Canvas;1493
46.4.1.1;Layering Elements in a Canvas;1494
46.4.1.2;Dragging Circles;1495
46.4.2;The Grid;1499
46.4.2.1;Fine-Tuning Rows and Columns;1501
46.4.2.2;Nesting Layout Containers;1502
46.4.2.3;Spanning Rows and Columns;1504
46.5;Animation;1505
46.5.1;Animation Basics;1505
46.5.2;Defining an Animation;1505
46.5.2.1;The Animation Class;1506
46.5.3;The Storyboard Class;1506
46.5.3.1;Configuring Animation Properties;1509
46.5.4;An Interactive Animation Example;1510
46.5.5;Transforms;1514
46.5.5.1;Using a Transform;1515
46.5.5.2;Animating a Transform;1516
46.6;Using Web Services with Silverlight;1518
46.6.1;Creating the Web Service;1519
46.6.2;Adding a Web Reference;1519
46.6.3;Calling the Web Service;1521
46.6.4;Configuring the Web Service URL;1522
46.6.5;Cross-Domain Web Service Calls;1523
46.7;Summary;1525
47;Index;1526



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.