<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Technology Life</title><subtitle type="text">Learning and Sharing--张涛的技术博客</subtitle><id>http://feed.cnblogs.com/blog/u/41521/rss</id><updated>2011-11-12T15:17:47Z</updated><author><name>上不了岸的鱼</name><uri>http://www.cnblogs.com/ttzhang/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ttzhang/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/41521/rss"/><entry><id>http://www.cnblogs.com/ttzhang/archive/2010/11/19/ADO-NET-Code-Samples-Collection.html</id><title type="text">ADO.NET Code Samples Collection【转载】</title><summary type="text">The ADO.NET Code Samples Collection is a roundup and map of some of the various data access code samples from  various sources including the MSDN library, Code Gallery, CodePlex, and Microsoft Support.</summary><published>2010-11-19T05:15:00Z</published><updated>2010-11-19T05:15:00Z</updated><author><name>上不了岸的鱼</name><uri>http://www.cnblogs.com/ttzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ttzhang/archive/2010/11/19/ADO-NET-Code-Samples-Collection.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ttzhang/archive/2010/11/19/ADO-NET-Code-Samples-Collection.html"/><content type="html">&lt;h3 &gt;原文链接：&lt;a href="http://blogs.msdn.com/b/jmeier/archive/2010/10/31/ado-net-code-samples-collection.aspx"&gt;http://blogs.msdn.com/b/jmeier/archive/2010/10/31/ado-net-code-samples-collection.aspx&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;版权声明：本文全部版权归原作者所有。&lt;/p&gt;&#xD;
&lt;h3 &gt;ADO.NET Code Samples Collection&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div &gt;        &lt;span &gt;&lt;a href="/members/J.D.-Meier/"&gt;&lt;img style="border-width: 0px; max-height: 32px; max-width: 32px;" src="/utility/anonymous.gif" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;                &lt;span &gt;&lt;a  href="/members/J.D.-Meier/"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;J.D. Meier&lt;/a&gt;&lt;/span&gt;            &lt;/div&gt;&#xD;
&lt;div &gt;        &lt;span &gt;&amp;nbsp;           31 Oct 2010 3:17 PM&lt;/span&gt;&amp;nbsp;           &amp;nbsp;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;ul &gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-48-03-metablogapi/8306.image_5F00_74677736.png"&gt;&lt;img style="border-width: 0px; display: inline; margin-left: 0px; margin-right: 0px;" title="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-48-03-metablogapi/3122.image_5F00_thumb_5F00_45A1BE94.png" border="0" alt="image" width="240" height="227" align="right" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;The ADO.NET Code Samples Collection is a roundup and map of some of the various data access code samples from&amp;nbsp; various sources including the MSDN library, Code Gallery, CodePlex, and Microsoft Support.&lt;/p&gt;&#xD;
&lt;p&gt;You can add to the code examples collection by sharing in the comments or emailing me at &lt;em&gt;FeedbackAndThoughts at live.com&lt;/em&gt;.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Common Categories for ADO.NET Code Samples      &lt;br /&gt;&lt;/strong&gt;The ADO.NET Code Samples Collection is organized using the following categories:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-48-03-metablogapi/3034.image_5F00_133DEB15.png"&gt;&lt;img style="border-width: 0px; display: inline;" title="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-48-03-metablogapi/1440.image_5F00_thumb_5F00_32ECC4DD.png" border="0" alt="image" width="400" height="287" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;ADO.NET Code Samples Collection&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Items&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;Data Binding&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;MSDN Library&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Binding to an ADO.NET DataSet Sample - &lt;a href="http://msdn.microsoft.com/en-us/library/ms771774%28VS.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms771774(VS.85).aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;Data Models&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;ADO.NET Entity Data Model Designer Extension Starter Kit - &lt;a href="http://code.msdn.microsoft.com/DesignerExtStartKit/Wiki/View.aspx?title=Home&amp;amp;version=1"&gt;http://code.msdn.microsoft.com/DesignerExtStartKit/Wiki/View.aspx?title=Home&amp;amp;version=1&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Project Riviera - &lt;a href="http://code.msdn.microsoft.com/riviera"&gt;http://code.msdn.microsoft.com/riviera&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Microsoft Support&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;How to work with table relationships and entity inheritances in ADO.NET EDM - &lt;a href="http://code.msdn.microsoft.com/KB977997"&gt;http://code.msdn.microsoft.com/KB977997&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;DataReader&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;MSDN Library&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;ADO.NET Sample Application - &lt;a href="http://msdn.microsoft.com/en-us/library/dw70f090%28VS.71%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/dw70f090(VS.71).aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;DataSet&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;MSDN Library&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Binding to an ADO.NET DataSet Sample - &lt;a href="http://msdn.microsoft.com/en-us/library/ms771774%28VS.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms771774(VS.85).aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Consuming a DataSet from an XML Web Service - &lt;a href="http://msdn.microsoft.com/en-us/library/s5xy331f%28VS.71%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/s5xy331f(VS.71).aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;DataSet and DataTable in ADO.NET 2.0 - &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163709.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/cc163709.aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;DataTable&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;MSDN Library&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;DataSet and DataTable in ADO.NET 2.0 - &lt;a href="http://msdn.microsoft.com/en-us/magazine/cc163709.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/cc163709.aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;Entity Framework&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;All-in-One Code Framework&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;EF4 CodeOnly Feature (C#) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#829046"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#829046&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;EF4 CodeOnly Feature (VB.NET) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#829050"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#829050&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;EF4.0 Complex Type Objects (C#) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#786345"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#786345&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;EF4.0 Complex Type Objects (VB.NET) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#786372"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#786372&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;EF4.0 Foreign Key Association (C#) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#786364"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#786364&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;EF4.0 Foreign Key Association (VB.NET) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#786387"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#786387&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;EF4 Lazy Loading Feature (C#) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#1007360"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#1007360&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;EF4 Lazy Loading Feature (VB.NET) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#1317759"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#1317759&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;EF4.0 Model First feature (C#) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#786820"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#786820&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;EF4.0 Model First feature (VB.NET) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#786824"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#786824&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Entity Data Model (C#) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#761797"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#761797&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Entity Data Model (VB.NET) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#761780"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#761780&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Entity Data Model Metadata Samples - &lt;a href="http://code.msdn.microsoft.com/EdmMetadataSamples"&gt;http://code.msdn.microsoft.com/EdmMetadataSamples&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Entity Framework 4.0 and WCF Data Services 4.0 in Visual Studio 2010 - &lt;a href="http://code.msdn.microsoft.com/mag201004VSData"&gt;http://code.msdn.microsoft.com/mag201004VSData&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Entity Framework Documentation Samples - &lt;a href="http://code.msdn.microsoft.com/EFDocSamples"&gt;http://code.msdn.microsoft.com/EFDocSamples&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Entity Framework Query Samples - &lt;a href="http://code.msdn.microsoft.com/EFQuerySamples"&gt;http://code.msdn.microsoft.com/EFQuerySamples&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Entity Framework Sample Provider - &lt;a href="http://code.msdn.microsoft.com/EFSampleProvider"&gt;http://code.msdn.microsoft.com/EFSampleProvider&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Hands-on-Lab: Using the Entity Framework in .NET 4 and Visual Studio 2010 - &lt;a href="http://code.msdn.microsoft.com/EntityFxHOLPDC09"&gt;http://code.msdn.microsoft.com/EntityFxHOLPDC09&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Sample EDMX Code Generator - &lt;a href="http://code.msdn.microsoft.com/sampleedmxcodegen"&gt;http://code.msdn.microsoft.com/sampleedmxcodegen&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Sample Entity Framework Provider for Oracle - &lt;a href="http://code.msdn.microsoft.com/EFOracleProvider"&gt;http://code.msdn.microsoft.com/EFOracleProvider&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;SketchPad - &lt;a href="http://code.msdn.microsoft.com/sketchpad"&gt;http://code.msdn.microsoft.com/sketchpad&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;General&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;All-in-One Code Framework&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Use ADO.NET in a C# application - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#394619"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#394619&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Use ADO in a VB.NET application - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#960683"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#960683&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Use ADO.NET in a C++ application - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#394577"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#394577&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;MSDN Library&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;.NET Framework Data Provider for ODBC - &lt;a href="http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_Odbc"&gt;http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_Odbc&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;,NET Framework Data Provider for OLE DB - &lt;a href="http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_OleDb"&gt;http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_OleDb&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;.NET Framework Data Provider for Oracle - &lt;a href="http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_OracleClient"&gt;http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_OracleClient&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;AdventureWorks Sales Model - &lt;a href="http://msdn.microsoft.com/en-us/library/bb387147.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb387147.aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Course Manager Application - &lt;a href="http://msdn.microsoft.com/en-us/library/ff595296.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff595296.aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Human Resources Skills Application - &lt;a href="http://msdn.microsoft.com/en-us/library/ee620621.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee620621.aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Serializing Self-Tracking Entities - &lt;a href="http://msdn.microsoft.com/en-us/library/ff595295.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff595295.aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;School Model - &lt;a href="http://msdn.microsoft.com/en-us/library/bb896300.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb896300.aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Typed ObjectQuery - &lt;a href="http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_QBM"&gt;http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_QBM&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;LINQ to DataSet&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;MSDN Library&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;LINQ Samples Hub page - &lt;a href="http://msdn.microsoft.com/en-us/library/bb397980.aspx#csharp"&gt;http://msdn.microsoft.com/en-us/library/bb397980.aspx#csharp&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;LINQ to Entities&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;MSDN Library&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;EntityClient data provider - &lt;a href="http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_EntityClient"&gt;http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_EntityClient&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;LINQ Samples Hub page - &lt;a href="http://msdn.microsoft.com/en-us/library/bb397980.aspx#csharp"&gt;http://msdn.microsoft.com/en-us/library/bb397980.aspx#csharp&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;LINQ to Entities - &lt;a href="http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_LINQ"&gt;http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_LINQ&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;LINQ to Objects&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;All-in-One Code Framework&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Use LINQ to Objects in C# - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#501157"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#501157&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Use LINQ to Objects in VB.NET - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#598174"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#598174&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;LINQ to SQL&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;All-in-One Code Framework&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Use LINQ to SQL in C# - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#511053"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#511053&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Use LINQ to SQL in VB.NET - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#600266"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#600266&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;LINQ to SQL N-tier Smart Client - &lt;a href="http://code.msdn.microsoft.com/linqntier"&gt;http://code.msdn.microsoft.com/linqntier&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;An Example of a Multi Tier Architecture for LINQ to SQL - &lt;a href="http://code.msdn.microsoft.com/multitierlinqtosql"&gt;http://code.msdn.microsoft.com/multitierlinqtosql&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;LINQ Samples Hub page - &lt;a href="http://msdn.microsoft.com/en-us/library/bb397980.aspx#csharp"&gt;http://msdn.microsoft.com/en-us/library/bb397980.aspx#csharp&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;LINQ to SQL - &lt;a href="http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_LINQ2SQL"&gt;http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_LINQ2SQL&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;LINQ to SQL N-tier Smart Client - &lt;a href="http://code.msdn.microsoft.com/linqntier"&gt;http://code.msdn.microsoft.com/linqntier&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;SketchPad - &lt;a href="http://code.msdn.microsoft.com/sketchpad"&gt;http://code.msdn.microsoft.com/sketchpad&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;TPT Inheritance with LINQ to SQL - &lt;a href="http://code.msdn.microsoft.com/TPT"&gt;http://code.msdn.microsoft.com/TPT&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;N-Tier&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;An Example of a Multi Tier Architecture for LINQ to SQL - &lt;a href="http://code.msdn.microsoft.com/multitierlinqtosql"&gt;http://code.msdn.microsoft.com/multitierlinqtosql&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Building N-Tier Apps with EF4 - &lt;a href="http://code.msdn.microsoft.com/mag200911EF4"&gt;http://code.msdn.microsoft.com/mag200911EF4&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;LINQ to SQL N-tier Smart Client - &lt;a href="http://code.msdn.microsoft.com/linqntier"&gt;http://code.msdn.microsoft.com/linqntier&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;O/RM Mapping&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Entity Framework Sample Provider - &lt;a href="http://code.msdn.microsoft.com/EFSampleProvider"&gt;http://code.msdn.microsoft.com/EFSampleProvider&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;OData&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Silverlight Samples for OData Over SQL Azure with AppFabric Access Control - &lt;a href="http://code.msdn.microsoft.com/SL3ODataSQLAzureACS"&gt;http://code.msdn.microsoft.com/SL3ODataSQLAzureACS&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;WCF Data Services Documentation Samples - &lt;a href="http://code.msdn.microsoft.com/AstoriaDocSamples"&gt;http://code.msdn.microsoft.com/AstoriaDocSamples&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;POCO&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;         &#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Update POCO entity properties and relationships (C#) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#1317741"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#1317741&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Update POCO entity properties and relationships (VB.NET) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#1317759"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#1317759&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;Silverlight&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;How to consume ADO.NET Data Services in Silverlight 3 - &lt;a href="http://code.msdn.microsoft.com/KB982499"&gt;http://code.msdn.microsoft.com/KB982499&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;SQL Server&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;MSDN Library&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;.NET Framework Data Provider for SQL Server - &lt;a href="http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_SqlClient"&gt;http://msdn.microsoft.com/en-us/library/dw70f090.aspx#_SqlClient&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Conserving Resources When Writing BLOB Values to SQL Server - &lt;a href="http://msdn.microsoft.com/en-us/library/3517w44b%28VS.71%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/3517w44b(VS.71).aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Optimistic Concurrency - &lt;a href="http://msdn.microsoft.com/en-us/library/aa0416cz%28VS.71%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa0416cz(VS.71).aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Paging Through a Query Result - &lt;a href="http://msdn.microsoft.com/en-us/library/tx1c9c2f%28VS.71%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/tx1c9c2f(VS.71).aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Retrieving Identity or Autonumber Values - &lt;a href="http://msdn.microsoft.com/en-us/library/ks9f57t0%28VS.71%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/ks9f57t0(VS.71).aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;Streaming&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Streaming Photo Data Service Sample - &lt;a href="http://code.msdn.microsoft.com/StreamingPhotoData/Wiki/View.aspx"&gt;http://code.msdn.microsoft.com/StreamingPhotoData/Wiki/View.aspx&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="113" valign="top"&gt;&#xD;
&lt;p&gt;&lt;em&gt;WCF Data Services&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="541" valign="top"&gt;&#xD;
&lt;p&gt;All-in-One Code Framework&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;ADO.NET Data Service in C# - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#659875"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#659875&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;ADO.NET Data Service in VB.NET - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#659791"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#659791&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Use ADO.NET Data Service in C# - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#659914"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#659914&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Use ADO.NET Data Service in VB.NET - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#659888"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#659888&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Use ADO.NET Data Service in Silverlight (C#) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#825814"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#825814&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;Use ADO.NET Data Service in Silverlight (VB.NET) - &lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/55574#825838"&gt;http://1code.codeplex.com/SourceControl/changeset/view/55574#825838&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;Building an ADO.NET Data Services WPF Client - &lt;a href="http://code.msdn.microsoft.com/astoriawpf/Release/ProjectReleases.aspx?ReleaseId=2083"&gt;http://code.msdn.microsoft.com/astoriawpf/Release/ProjectReleases.aspx?ReleaseId=2083&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;How to consume ADO.NET Data Services in Silverlight 3 - &lt;a href="http://code.msdn.microsoft.com/KB982499"&gt;http://code.msdn.microsoft.com/KB982499&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;How to create and then to call ADO.NET Data Services for different data sources - &lt;a href="http://code.msdn.microsoft.com/KB982497"&gt;http://code.msdn.microsoft.com/KB982497&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;JSONP and URL-controlled format support for ADO.NET Data Services - &lt;a href="http://code.msdn.microsoft.com/DataServicesJSONP"&gt;http://code.msdn.microsoft.com/DataServicesJSONP&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;WCF Data Services Documentation Samples - &lt;a href="http://code.msdn.microsoft.com/AstoriaDocSamples"&gt;http://code.msdn.microsoft.com/AstoriaDocSamples&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/ttzhang/aggbug/1881712.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ttzhang/archive/2010/11/19/ADO-NET-Code-Samples-Collection.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ttzhang/archive/2010/11/19/asp-net-code-samples-collection.html</id><title type="text">ASP.NET Code Samples Collection【转载】</title><summary type="text">The ASP.NET Code Samples Collection is a roundup and map of ASP.NET code samples from  various sources including the MSDN library, www.ASP.net, Code Gallery, CodePlex, and Microsoft Support.You can add to the ASP.NET code examples collection by sharing in the comments or emailing me atFeedbackAndTh</summary><published>2010-11-19T03:48:00Z</published><updated>2010-11-19T03:48:00Z</updated><author><name>上不了岸的鱼</name><uri>http://www.cnblogs.com/ttzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ttzhang/archive/2010/11/19/asp-net-code-samples-collection.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ttzhang/archive/2010/11/19/asp-net-code-samples-collection.html"/><content type="html">&lt;p&gt;&lt;strong&gt;原文链接：&lt;/strong&gt;&lt;a href="http://blogs.msdn.com/b/jmeier/archive/2010/10/31/asp-net-code-samples-collection.aspx"&gt;http://blogs.msdn.com/b/jmeier/archive/2010/10/31/asp-net-code-samples-collection.aspx&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;版权声明：本文全部版权归原作者所有。&lt;/p&gt;&#xD;
&lt;h3 &gt;ASP.NET Code Samples Collection&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
        &lt;span &gt;&lt;a href="/members/J.D.-Meier/"&gt;&lt;img style="border-width: 0px; max-height: 32px; max-width: 32px;" src="/utility/anonymous.gif" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&#xD;
        &#xD;
        &lt;span &gt;&lt;a  href="/members/J.D.-Meier/"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;J.D. Meier&lt;/a&gt;&lt;/span&gt;&#xD;
        &#xD;
    &lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
        &lt;span &gt;&amp;nbsp;&#xD;
&#xD;
            31 Oct 2010 3:31 PM&lt;/span&gt;&amp;nbsp;&#xD;
&#xD;
            &amp;nbsp;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;ul &gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-48-03-metablogapi/2376.image_5F00_630A203F.png"&gt;&lt;img style="border-width: 0px; display: inline; margin-left: 0px; margin-right: 0px;" title="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-48-03-metablogapi/0218.image_5F00_thumb_5F00_4216AD98.png" border="0" alt="image" width="240" height="222" align="right" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;The ASP.NET Code Samples Collection is a roundup and map of ASP.NET code samples from&amp;nbsp; various sources including the MSDN library, www.ASP.net, Code Gallery, CodePlex, and Microsoft Support.&lt;/p&gt;&#xD;
&lt;p&gt;You can add to the ASP.NET code examples collection by sharing in the comments or emailing me at&lt;em&gt;FeedbackAndThoughts at live.com&lt;/em&gt;.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Common Categories for ASP.NET Code Samples &lt;br /&gt;&lt;/strong&gt;The ASP.NET Code Samples Collection is organized using the following categories:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-48-03-metablogapi/8244.image_5F00_61C58760.png"&gt;&lt;img style="border-width: 0px; display: inline;" title="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-48-03-metablogapi/7242.image_5F00_thumb_5F00_53870E70.png" border="0" alt="image" width="450" height="129" /&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;ASP.NET Code Samples Collection&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;table style="width: 601px;" border="1" cellspacing="0" cellpadding="0"&gt;&#xD;
&lt;tbody&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Items&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Sample Applications&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://layersample.codeplex.com/" target="_blank"&gt;Layered Architecture Sample&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://www.asp.net/web-forms/samples/tailspin-spyworks" target="_blank"&gt;Tailspin Spyworks&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;ASP.NET MVC&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://nerddinner.codeplex.com/%20" target="_blank"&gt;Nerd Dinner&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://www.asp.net/mvc/samples/mvc-music-store" target="_blank"&gt;MVC Music Store&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;AJAX / jQuery&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;All-in-One Code Framework&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/45838#645082" target="_blank"&gt;ASP.NET AJAX Extender (C#)&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/45838#771587" target="_blank"&gt;ASP.Net Ajax ScriptControl (C#)&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/AJAXpager" target="_blank"&gt;AJAX pager&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/AjaxPagingforDataGri%20" target="_blank"&gt;Ajax Paging for DataGrid&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/Aspnetdropdownlistus" target="_blank"&gt;ASP.NET dropdownlist using ajax &amp;amp; VB&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/PSVR2007AJAXWebPart" target="_blank"&gt;Building an AJAX Web Part for Microsoft Office Project Server 2007&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/mag200903IE8" target="_blank"&gt;Code for "New Features To Slice, Store, And Accelerate Your Web Applications&amp;rdquo;&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/CRMWCF" target="_blank"&gt;CRM WCF Integration&lt;/a&gt; - Blogged at &lt;a href="http://www.waelhamze.com"&gt;http://www.waelhamze.com&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/ajaxproxy" target="_blank"&gt;Fast, Scalable ASP.NET AJAX Content Proxy that Streams content&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/StateOfThePractice" target="_blank"&gt;Improving WCF, AJAX, and ASP.NET Security and Performance&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/JoelRumerman" target="_blank"&gt;Joel Rumerman's Code Samples&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/AjaxView%20" target="_blank"&gt;Microsoft Visual Studio AJAX Profiling Extensions Power Tool&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/NHibernateAccessExte" target="_blank"&gt;NHibernateAccessExtension&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/PauloMorgado" target="_blank"&gt;Paulo Morgado's Code Gallery&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/RegClientControls" target="_blank"&gt;RegClientControls&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/StuInfoMVCAJAX" target="_blank"&gt;Student Information using ASP.NET MVC 2.0 and AJAX&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/webapptoolkitbing%20" target="_blank"&gt;Web Application Toolkit for Bing Search&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Microsoft Support&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB961864" target="_blank"&gt;KB961864 - _pendingCallbacks[...].async' is null on ASP.NET 2.0 AJAX site&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;Authentication&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/fabrikamjets" target="_blank"&gt;Fabrikam Jets - Integrating Codename "Dallas" with AppFabric Access Control&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/rdsdev" target="_blank"&gt;Remote Desktop Services Developer Resources&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/tokenauthentication" target="_blank"&gt;Token Authentication for ASP.NET&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Customer Support&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB971831" target="_blank"&gt;KB971831 - Allow token based authentication w/o transport or message encryption&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;Authorization&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/mag200911WIF" target="_blank"&gt;Claims-Based Authorization with Windows Identity Foundation&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/mag200810SrvStation" target="_blank"&gt;Code for "Authorization In WCF-Based Services"&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/Enhancedauthorizatio" target="_blank"&gt;Enhanced authorization module for MCMS&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/FabrikamShipping%20" target="_blank"&gt;FabrikamShipping&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/msservices" target="_blank"&gt;MSServices, HTTP Data Provider&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/oragonsecurity" target="_blank"&gt;Oragon Security&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;CSS 2&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/csstemplates" target="_blank"&gt;ASP.NET CSS Templates&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/mag200903IE8" target="_blank"&gt;Code for &amp;ldquo;New Features to Slice, Store and Accelerate your Web Applications&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/devscribe" target="_blank"&gt;Devscribe&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/webwidgetsdotnet%20" target="_blank"&gt;Web Widgets with .Net&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;Data Access&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;All-in-One Code Framework&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://1code.codeplex.com/SourceControl/changeset/view/45838#791807" target="_blank"&gt;ASP.NET custom data source for rdlc (C#)&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/ObjectDataSourceNort" target="_blank"&gt;A sample of ASP.NET ObjectDataSource with Northwind database&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/allinonecodefx" target="_blank"&gt;All-In-One Code Framework (AIO)&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/multitierlinqtosql" target="_blank"&gt;An Example of a Multi Tier Architecture for Linq to Sql&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/dynamicdata" target="_blank"&gt;ASP.NET Dynamic Data Preview&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/SimpleLingToDatabase" target="_blank"&gt;Building a LINQ Provider&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/DataAccessWebPart" target="_blank"&gt;Data Access in a SharePoint Web Part&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/InsertSQLCE" target="_blank"&gt;Inserting Data into SQL Compact Edition Databases in Visual Studio&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqEntityDataReader" target="_blank"&gt;LINQ Entity Data Reader&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/CodeGallery" target="_blank"&gt;MSDN Code Gallery Information and Discussion&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/AccessDataVS" target="_blank"&gt;Working with Microsoft Access Data in Visual Studio&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;Exception Management&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/aebordones" target="_blank"&gt;C# tested &amp;amp; easiest lines of code for send email with ASP.NET page&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/mag200902Foundations" target="_blank"&gt;Code for "Error Handling in Workflows"&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/ElementaryExtensions%20" target="_blank"&gt;ElementaryExtensions Library&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/ESBGErrorHandler" target="_blank"&gt;ESB Guidance WCF Error Handler&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/ExceptionFilterInjct%20" target="_blank"&gt;Exception Filter Inject - Provides C# dll/exe's with execption filter support&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;Exception Handler Info Generator - &lt;a href="http://code.msdn.microsoft.com/ExceptionHandlerInfo"&gt;http://code.msdn.microsoft.com/ExceptionHandlerInfo&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/exceptiobnhandling" target="_blank"&gt;Exception handling&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/FixPageLayout" target="_blank"&gt;Fix Page Layout&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/crmplugintemplate" target="_blank"&gt;Visual Studio Template for Microsoft Dynamics CRM Plug-ins&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/w2k8r2" target="_blank"&gt;Windows Server 2008 R2&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/ExceptionInterceptor" target="_blank"&gt;WinForm Exception Interceptor&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/XmlCleanupSoapExtens%20" target="_blank"&gt;XmlCleanupSoapExtension&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Microsoft Support&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB893005" target="_blank"&gt;KB893005 - Exception thrown in ErrorProvider constructor&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB899511" target="_blank"&gt;KB899511 - System.NullReferenceException exceptions in .NET 1.1&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB913393" target="_blank"&gt;KB913393 - Error when you specify a larger than 2 GB Content-Length HTTP header&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB917495" target="_blank"&gt;KB917495 - OutOfMemoryException exception when you run a .NET 2.0 application&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB923028" target="_blank"&gt;KB923028 - "Unhandled Error" when you run a .NET Framework 2.0 Remoting&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB930771" target="_blank"&gt;KB930771 - Exception due to managed heap corruption&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB934839" target="_blank"&gt;KB934839 - Exception when you browse .NET Framework 2.0 ASP.NET Web application&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB941132" target="_blank"&gt;KB941132 - NullReferenceException exception when you use ShowDialog method&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB960096" target="_blank"&gt;KB960096 - Error message when you try to add files to Source Code Control (SCC)&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB971169" target="_blank"&gt;KB971169 - Exception When App_GlobalResource Has Culture Name Like zh-hant&lt;/a&gt;&amp;nbsp; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB975954" target="_blank"&gt;KB975954 - AccessViolationException or a dead-lock occurs in .NET 2.0 based app&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB981119" target="_blank"&gt;KB981119 - ScriptModule throws FIPS exception on Win 7&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;JavaScript / JSON&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/mag200903IE8" target="_blank"&gt;Code for "New Features To Slice, Store, And Accelerate Your Web Applications&amp;rdquo;&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/CRMSilverlight" target="_blank"&gt;CRM Silverlight Integration&lt;/a&gt; - Blogged at &lt;a href="http://www.waelhamze.com"&gt;http://www.waelhamze.com&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/CRMWCF" target="_blank"&gt;CRM WCF Integration&lt;/a&gt; - Blogged at &lt;a href="http://www.waelhamze.com"&gt;http://www.waelhamze.com&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/sps2010cljs" target="_blank"&gt;JavaScript in SharePoint 2010&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/virrpanna" target="_blank"&gt;JavaScript snippet&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/JSONSampleDotNet" target="_blank"&gt;JSON ASP.NET Sample&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/DataServicesJSONP%20" target="_blank"&gt;JSONP and URL-controlled format support for ADO.NET Data Services&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB958502" target="_blank"&gt;KB958502 - JScript Editor support for &amp;ldquo;-vsdoc.js&amp;rdquo; IntelliSense doc. files&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LiveFramework" target="_blank"&gt;Live Framework&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/AjaxView" target="_blank"&gt;Microsoft Visual Studio AJAX Profiling Extensions Power Tool&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/SPListJS" target="_blank"&gt;SharePoint Javascript Utilities&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/webwidgetsdotnet" target="_blank"&gt;Web Widgets with .Net&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;Logging and Instrumentation&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;patterns &amp;amp; practices&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff649096.aspx" target="_blank"&gt;Implementing Intercepting Filter in ASP.NET Using HTTP Module&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;MVC&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/AsyncMvc" target="_blank"&gt;Asynchronous support for ASP.NET MVC&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff398048%28VS.100%29.aspx" target="_blank"&gt;How to: Implement Remote Validation from a Client in MVC&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee256141%28VS.100%29.aspx" target="_blank"&gt;How to: Validate Model Data Using DataAnnotations Attributes&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/mytripmvc" target="_blank"&gt;Mytrip.Mvc&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.controller%28VS.100%29.aspx" target="_blank"&gt;System.Web.Mvc.Controller class&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee728598%28VS.100%29.aspx" target="_blank"&gt;Using an Asynchronous Controller in ASP.NET MVC&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd381533%28VS.100%29.aspx" target="_blank"&gt;Walkthrough: Adding ASP.NET AJAX Scripting to an MVC Project&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd410597%28VS.100%29.aspx" target="_blank"&gt;Walkthrough: Creating a Basic MVC Project with Unit Tests in Visual Studio&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee671793%28VS.100%29.aspx" target="_blank"&gt;Walkthrough: Organizing an ASP.NET MVC Application using Areas&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd405231%28VS.100%29.aspx%20" target="_blank"&gt;Walkthrough: Using MVC View Templates with Data Scaffolding&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee308450%28VS.100%29.aspx" target="_blank"&gt;Walkthrough: Using Templated Helpers to Display Data&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;Navigation&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;Codeplex&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://navigation.codeplex.com/" target="_blank"&gt;Navigation for ASP.NET Web Forms&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;Request Processing&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;ASP.NET Developer Center (www.ASP.NET)&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/applications/httphandlers.aspx" target="_blank"&gt;HTTP Handlers and Factories&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;State / Session Management&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/AspNetSessionMonitor" target="_blank"&gt;ASP.NET Session Monitor 1.0&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/cc188774.aspx%20" target="_blank"&gt;Cutting Edge: The ASP.NET View State&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;Validation&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/validation/default.aspx"&gt;Validating Form Input Controls&amp;nbsp;&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff398048%28VS.100%29.aspx" target="_blank"&gt;How to: Implement Remote Validation from a Client in MVC&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee256141%28VS.100%29.aspx" target="_blank"&gt;How to: Validate Model Data Using DataAnnotations Attributes&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;tr&gt;&#xD;
&lt;td width="105" valign="top"&gt;&#xD;
&lt;p&gt;Visual Studio and ASP.NET Development&lt;/p&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;td width="494" valign="top"&gt;&#xD;
&lt;p&gt;Code Gallery&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/bmg" target="_blank"&gt;Bootstrapper Manifest Generator&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/cshuochess" target="_blank"&gt;C# Micro Chess (Huo Chess)&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/eisk" target="_blank"&gt;Employee Info Starter Kit&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/xnahuochess" target="_blank"&gt;Huo Chess - XNA Edition&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/solverfoundation" target="_blank"&gt;Microsoft Solver Foundation - Express Edition&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/PowerCommands%20" target="_blank"&gt;PowerCommands for Visual Studio 2008&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/mschart%20" target="_blank"&gt;Samples Environment for Microsoft Chart Controls&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/StickyNotes" target="_blank"&gt;StickyNotes&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/cs2008samples" target="_blank"&gt;Visual C# 2008 Samples&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/DSLToolsLab" target="_blank"&gt;Visualization and Modeling SDK (DSL Tools) Lab&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;p&gt;Microsoft Support&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB912019" target="_blank"&gt;KB912019 - Error when you rebuild and view a Windows Form in Visual Studio 2005&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB915782" target="_blank"&gt;KB915782 - InvalidCastException error in an ASP.NET-connected Web application&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB917952" target="_blank"&gt;KB917952 - Error message when you try to install a ClickOnce application&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB918559" target="_blank"&gt;KB918559 - Performance issues when debugging a Visual Studio 2005 C++ Project&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB926776" target="_blank"&gt;KB926776 - A hotfix rollup package for 913297, 913393, 918995, and 924895&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB928208" target="_blank"&gt;KB928208 - Compile and runtime issues for Visual Basic Macros&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB930198" target="_blank"&gt;KB930198 - C2244 error after you install Visual Studio SP1&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB943969%20" target="_blank"&gt;KB943969 - Visual Studio 2005 Slow Performance when you use IntelliSense feature&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB946040" target="_blank"&gt;KB946040 - Error C2471: cannot update program database, Visual C++ 2008 project&lt;/a&gt;&amp;nbsp; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB946581" target="_blank"&gt;KB946581 - Cumulative update for Visual Web Developer Express 2008&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/KB958502" target="_blank"&gt;KB958502 - JScript Editor support for &amp;ldquo;-vsdoc.js&amp;rdquo; IntelliSense doc. files&lt;/a&gt; &lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;/td&gt;&#xD;
&lt;/tr&gt;&#xD;
&lt;/tbody&gt;&#xD;
&lt;/table&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/ttzhang/aggbug/1881662.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ttzhang/archive/2010/11/19/asp-net-code-samples-collection.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ttzhang/archive/2010/09/14/1825690.html</id><title type="text">SQL Server修改表结构后批量更新所有视图</title><summary type="text">最近修改了数据库表结构，数据同步的时候出了问题，发现很多数据明明已经修改，但是通过视图筛选出来的还是原来的数据，所以怀疑应该是视图缓存了数据，在园子里找到下面的博文，在这里做个记录备忘。原文链接：http://www.cnblogs.com/yashen/archive/2004/12/23/81000.html我们在使用SqlServer时经常遇到这种情况，当修改某个表的结构后，相关的视图就不对...</summary><published>2010-09-14T02:44:00Z</published><updated>2010-09-14T02:44:00Z</updated><author><name>上不了岸的鱼</name><uri>http://www.cnblogs.com/ttzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ttzhang/archive/2010/09/14/1825690.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ttzhang/archive/2010/09/14/1825690.html"/><content type="html">&lt;p&gt;最近修改了数据库表结构，数据同步的时候出了问题，发现很多数据明明已经修改，但是通过视图筛选出来的还是原来的数据，所以怀疑应该是视图缓存了数据，在园子里找到下面的博文，在这里做个记录备忘。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #0000ff;"&gt;&lt;strong&gt;原文链接：&lt;/strong&gt;&lt;/span&gt;&lt;a  target="_blank" href="http://www.cnblogs.com/yashen/archive/2004/12/23/81000.html"&gt;http://www.cnblogs.com/yashen/archive/2004/12/23/81000.html&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们在使用SqlServer时经常遇到这种情况，当修改某个表的结构后，相关的视图就不对了而导致程序错误，因此就有个下面这个存储过程。&lt;br /&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;CREATE PROCEDURE RefreshAllView AS&#xD;
DECLARE MyCursor CURSOR&#xD;
FOR select Name from dbo.sysobjects where OBJECTPROPERTY(id, N'IsView') = 1 and (not name in ('sysconstraints','syssegments')) &#xD;
&#xD;
 &#xD;
DECLARE @name varchar(40)&#xD;
OPEN MyCursor&#xD;
&#xD;
FETCH NEXT FROM MyCursor INTO @name&#xD;
WHILE (@@fetch_status &amp;lt;&amp;gt; -1)&#xD;
BEGIN&#xD;
 IF (@@fetch_status &amp;lt;&amp;gt; -2)&#xD;
 begin&#xD;
 exec sp_refreshview @name&#xD;
 end&#xD;
 FETCH NEXT FROM MyCursor INTO @name&#xD;
END&#xD;
&#xD;
CLOSE MyCursor&#xD;
DEALLOCATE MyCursor&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ttzhang/aggbug/1825690.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ttzhang/archive/2010/09/14/1825690.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ttzhang/archive/2010/08/26/improve-your-jquery-25-excellent-tips.html</id><title type="text">Improve your jQuery - 25 excellent tips[转载]</title><summary type="text">jQuery is awesome. I've been using it for about a year now and although I was impressed to begin with I'm liking it more and more the longer I use it and the more I find out about it's inner workings.I'm no jQuery expert. I don't claim to be, so if there are mistakes in this article then feel free to correct me or make suggestions for improvements.I'd call myself an "intermediate" jQuery user a</summary><published>2010-08-26T03:30:00Z</published><updated>2010-08-26T03:30:00Z</updated><author><name>上不了岸的鱼</name><uri>http://www.cnblogs.com/ttzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ttzhang/archive/2010/08/26/improve-your-jquery-25-excellent-tips.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ttzhang/archive/2010/08/26/improve-your-jquery-25-excellent-tips.html"/><content type="html">&lt;h1 &gt;&lt;span &gt;Improve your jQuery - 25 excellent tips&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div &gt;14 Dec 2008 | &lt;a id="ctl00_ctl00_content_middleColumn_lnk_author" href="http://www.cnblogs.com/meetTeam.aspx#JonHobbs-Smith"&gt;Jon Hobbs-Smith&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div &gt;原文链接：&lt;a href="http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx" target="_blank"&gt;http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;div &gt;本文所有版权及其他相关权利，均归原作者所有。&lt;/div&gt;&#xD;
&lt;div &gt;&lt;/div&gt;&#xD;
&lt;div &gt;&#xD;
&lt;div &gt;&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;&#xD;
jQuery is awesome. I've been using it for about a year now and although I was impressed to begin with I'm liking it more and more the longer I use it and the more I find out about it's inner workings.&lt;br /&gt;&lt;br /&gt;I'm no jQuery expert. I don't claim to be, so if there are mistakes in this article then feel free to correct me or make suggestions for improvements.&lt;br /&gt;&lt;br /&gt;I'd call myself an "intermediate" jQuery user and I thought some others out there could benefit from all the little tips, tricks and techniques I've learned over the past year. The article also ended up being a lot longer than I thought it was going to be so I'll start with a table of contents so you can skip to the bits you're interested in.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;ul&gt;&#xD;
&lt;li&gt;&lt;a href="#tip1"&gt;&amp;nbsp;&amp;nbsp;1. &amp;nbsp;Load the framework from Google Code&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip2"&gt;&amp;nbsp;&amp;nbsp;2. &amp;nbsp;Use a cheat sheet&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip3"&gt;&amp;nbsp;&amp;nbsp;3. &amp;nbsp;Combine all your scripts and minify them&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip4"&gt;&amp;nbsp;&amp;nbsp;4. &amp;nbsp;Use Firebug's excellent console logging facilities&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip5"&gt;&amp;nbsp;&amp;nbsp;5. &amp;nbsp;Keep selection operations  to a minimum by caching&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip6"&gt;&amp;nbsp;&amp;nbsp;6. &amp;nbsp;Keep DOM manipulation to a minimum&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip7"&gt;&amp;nbsp;&amp;nbsp;7. &amp;nbsp;Wrap everything in a single element when doing any kind of DOM insertion&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip8"&gt;&amp;nbsp;&amp;nbsp;8. &amp;nbsp;Use IDs instead of classes wherever possible&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip9"&gt;&amp;nbsp;&amp;nbsp;9. &amp;nbsp;Give your selectors a context&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip10"&gt;10. &amp;nbsp;Use chaining properly&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip11"&gt;11. &amp;nbsp;Learn to use animate properly&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip12"&gt;12. &amp;nbsp;Learn about event delegation&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip13"&gt;13. &amp;nbsp;Use classes to store state&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip14"&gt;14. &amp;nbsp;Even better, use jQuery's internal data() method to store state&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip15"&gt;15. &amp;nbsp;Write your own selectors&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip16"&gt;16. &amp;nbsp;Streamline your HTML and modify it once the page has loaded&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip17"&gt;17. &amp;nbsp;Lazy load content for speed and SEO benefits&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip18"&gt;18. &amp;nbsp;Use jQuery's utility functions&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip19"&gt;19. &amp;nbsp;Use noconflict to rename the jquery object when using other frameworks&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip20"&gt;20. &amp;nbsp;How to tell when images have loaded&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip21"&gt;21. &amp;nbsp;Always use the latest version&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip22"&gt;22. &amp;nbsp;How to check if an element exists&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip23"&gt;23. &amp;nbsp;Add a JS class to your HTML attribute&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip24"&gt;24. &amp;nbsp;Return 'false' to prevent default behaviour&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li&gt;&lt;a href="#tip25"&gt;25. &amp;nbsp;Shorthand for the ready event&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1. Load the framework from Google Code&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;br /&gt;Google have been hosting several JavaScript libraries for a while now on Google Code and there are several advantages to loading it from them instead of from your server. It saves on bandwidth, it'll load very quickly from Google's CDN and most importantly it'll already be cached if the user has visited a site which delivers it from Google Code.&lt;br /&gt;&lt;br /&gt;This makes a lot of sense. How many sites out there are serving up identical copies of jQuery that aren't getting cached? It's easy to do too...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;&amp;lt;script src="http://www.google.com/jsapi"&amp;gt;&amp;lt;/script&amp;gt;&#xD;
&amp;lt;script type="text/javascript"&amp;gt;&#xD;
&#xD;
    // Load jQuery&#xD;
    google.load("jquery", "1.2.6");&#xD;
&#xD;
    google.setOnLoadCallback(function() {&#xD;
        // Your code goes here.&#xD;
    });&#xD;
       &#xD;
&amp;lt;/script&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;Or, you can just include a direct reference like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;&amp;lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;&lt;a href="http://code.google.com/apis/ajaxlibs/documentation/index.html"&gt;Full instructions here&lt;/a&gt;&#xD;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2. Use a cheat sheet&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;br /&gt;Not just a jQuery tip, there are some great cheat sheets out there for most languages. It's handy having every function on a printable A4 sheet for reference and luckily these guys have produced a couple of nice ones..&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gscottolson.com/weblog/2008/01/11/jquery-cheat-sheet/"&gt;http://www.gscottolson.com/weblog/2008/01/11/jquery-cheat-sheet/&lt;/a&gt;&#xD;
&lt;br /&gt;&lt;a href="http://colorcharge.com/jquery/"&gt;http://colorcharge.com/jquery/&lt;/a&gt;&#xD;
 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3. Combine all your scripts and minify them&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;br /&gt;OK, a general JavaScript tip here. But any big project that uses lots of jQuery probably uses lots of plugins (this site uses easing, localScroll, lightbox and preload) so it's usually applicable.&lt;br /&gt;&lt;br /&gt;Browsers can't load scripts concurrently (well, most can't, yet), which means that if you've got several scripts downloading one at a time then you're really slowing down the loading of your page. So, assuming the scrips are being loaded on every page then you should consider combining them into one long script before deploying.&lt;br /&gt;&lt;br /&gt;Some of the plugins will already be minified, but you should consider packing your scripts and any that aren't already. It only takes a few seconds. I'm personally a fan of &lt;a href="http://dean.edwards.name/packer/"&gt;Packer by Dean Edwards&lt;/a&gt;&#xD;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4. Use Firebug's excellent console logging facilities&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;br /&gt;If you haven't already installed Firebug then you really should. Aside from many other useful features such as allowing you to inspect http traffic and find problems with your CSS it has excellent logging commands that allow you to easily debug your scripts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://getfirebug.com/console.html"&gt;Here's a full explanation of all of it's features&lt;/a&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;My favourite features are "console.info", which you can use to just dump messages and variables to the screen without having to use alert boxes and "console.time" which allows you to easily set up a timer to wrap a bunch of code and see how long it takes. They're all really easy to use too...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;console.time('create list');&#xD;
&#xD;
for (i = 0; i &amp;lt; 1000; i++) {&#xD;
    var myList = $('.myList');&#xD;
    myList.append('This is list item ' + i);&#xD;
}&#xD;
&#xD;
console.timeEnd('create list');&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;In this instance I've deliberately written some very inefficient code! In the next few tips I'll show you how we can use the timer to show some improvements which can be made.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;5. Keep selection operations  to a minimum by caching&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;br /&gt;jQuery selectors are awesome. They make selecting any element on the page incredibly simple, but internally they have to do a fair amount of work and if you go mad with them you might find things starting to get pretty slow.&lt;br /&gt;&lt;br /&gt;If you're selecting the same element time and time again (in a loop for example) then you can just select it once and keep it in memory while you manipulate it to your heart's content. Take the following example where we add items to an unordered list using a loop.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;for (i = 0; i &amp;lt; 1000; i++) {&#xD;
    var myList = $('.myList');&#xD;
    myList.append('This is list item ' + i);&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;That takes 1066 milliseconds on my PC in Firefox 3 (imagine how long it would IE6!), which is pretty slow in JavaScript terms. Now take a look at the following code where we use the selector just once.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;var myList = $('.myList');&#xD;
&#xD;
for (i = 0; i &amp;lt; 1000; i++) {&#xD;
    myList.append('This is list item ' + i);&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;That only takes 224 milliseconds, more than 4x faster, just by moving one line of code.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;6. Keep DOM manipulation to a minimum&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;br /&gt;We can make the code from the previous tip even faster by cutting down on the number of times we insert into the DOM. DOM insertion operations like .append() .prepend() .after() and .wrap() are relatively costly and performing lots of them can really slow things down.&lt;br /&gt;&lt;br /&gt;All we need to do is use string concatenation to build the list and then use a single function to add them to your unordered list like .html() is much quicker. Take the following example...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;var myList = $('#myList');&#xD;
&#xD;
for (i=0; i&amp;lt;1000; i++){&#xD;
    myList.append('This is list item ' + i);&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;On my PC that takes 216 milliseconds , just over a 1/5th of a second, but if we build the list items as a string first and use the HTML method to do the insert, like this....&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;var myList = $('.myList');&#xD;
var myListItems = '';&#xD;
&#xD;
for (i = 0; i &amp;lt; 1000; i++) {&#xD;
    myListItems += '&amp;lt;li&amp;gt;This is list item ' + i + '&amp;lt;/li&amp;gt;';&#xD;
}&#xD;
&#xD;
myList.html(myListItems);&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;That takes 185 milliseconds, not much quicker but that's another 31 milliseconds off the time.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;7. Wrap everything in a single element when doing any kind of DOM insertion&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;br /&gt;OK, don't ask me why this one works (I'm sure a more experienced coder will explain).&lt;br /&gt;&lt;br /&gt;In our last example we inserted 1000 list items into an unordered list using the .html() method. If we had have wrapped them in the UL tag before doing the insert and inserted the completed UL into another tag (a DIV) then we're effectively only inserting 1 tag, not 1000, which seems to be much quicker. Like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;var myList = $('.myList');&#xD;
var myListItems = '&amp;lt;ul&amp;gt;';&#xD;
&#xD;
for (i = 0; i &amp;lt; 1000; i++) {&#xD;
    myListItems += '&amp;lt;li&amp;gt;This is list item ' + i + '&amp;lt;/li&amp;gt;';&#xD;
}&#xD;
&#xD;
myListItems += '&amp;lt;/ul&amp;gt;';&#xD;
myList.html(myListItems);&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;The time is now only 19 milliseconds, a massive improvement, 50x faster than our first example.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;8. Use IDs instead of classes wherever possible&lt;/strong&gt;&lt;/p&gt;&#xD;
jQuery makes selecting DOM elements using classes as easy as selecting elements by ID used to be, so it's tempting to use classes much more liberally than before. It's still much better to select by ID though because jQuery uses the browser's native method (getElementByID) to do this and doesn't have to do any of it's own DOM traversal, which is much faster. How much faster? Let's find out.&lt;br /&gt;&lt;br /&gt;I'll use the previous example and adapt it so each LI we create has a unique class added to it. Then I'll loop through and select each one once.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;// Create our list&#xD;
var myList = $('.myList');&#xD;
var myListItems = '&amp;lt;ul&amp;gt;';&#xD;
&#xD;
for (i = 0; i &amp;lt; 1000; i++) {&#xD;
    myListItems += '&amp;lt;li &amp;gt;This is a list item&amp;lt;/li&amp;gt;';&#xD;
}&#xD;
&#xD;
myListItems += '&amp;lt;/ul&amp;gt;';&#xD;
myList.html(myListItems);&#xD;
&#xD;
// Select each item once&#xD;
for (i = 0; i &amp;lt; 1000; i++) {&#xD;
    var selectedItem = $('.listItem' + i);&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;Just as I thought my browser had hung, it finished, in 5066 milliseconds (over 5 seconds). So i modified the code to give each item an ID instead of a class and then selected them using the ID.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;// Create our list&#xD;
var myList = $('.myList');&#xD;
var myListItems = '&amp;lt;ul&amp;gt;';&#xD;
&#xD;
for (i = 0; i &amp;lt; 1000; i++) {&#xD;
    myListItems += '&amp;lt;li id="listItem' + i + '"&amp;gt;This is a list item&amp;lt;/li&amp;gt;';&#xD;
}&#xD;
&#xD;
myListItems += '&amp;lt;/ul&amp;gt;';&#xD;
myList.html(myListItems);&#xD;
&#xD;
// Select each item once&#xD;
for (i = 0; i &amp;lt; 1000; i++) {&#xD;
    var selectedItem = $('#listItem' + i);&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;This time it only took 61 milliseconds. Nearly 100x faster.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;9. Give your selectors a context&lt;/strong&gt;&lt;/p&gt;&#xD;
By default, when you use a selector such as $('.myDiv') the whole of the DOM will be traversed, which depending on the page could be expensive.&lt;br /&gt;&lt;br /&gt;The jQuery function takes a second parameter when performing a selection.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;jQuery( expression, context )&lt;/strong&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;By providing a context to the selector, you give it an element to start searching within so that it doesn't have to traverse the whole of the DOM.&lt;br /&gt;&lt;br /&gt;To demonstrate this, let's take the first block of code from the tip above. It creates an unordered list with 1000 items, each with an individual class. It then loops through and selects each item once. You'll remember that when selecting by class it took just over 5 seconds to select all 1000 of them using this selector.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;var selectedItem = $('#listItem' + i);&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;I then added a context so that it was only running the selector inside the unordered list, like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;var selectedItem = $('#listItem' + i, $('.myList'));&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;It still took 3818 milliseconds because it's still horribly inefficient, but that's more than a 25% speed increase by making a small modification to a selector.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;10. Use chaining properly&lt;/strong&gt;&lt;/p&gt;&#xD;
One of the coolest things about jQuery is it's ability to chain method calls together. So, for example, if you want to switch the class on an element.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('myDiv').removeClass('off').addClass('on');&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;If you're anything like me then you probably learned that in your first 5 minutes of reading about jQuery but it goes further than that. Firstly, it still works across line breaks (because jQuery = JavaScript), which means you can write neat code like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#mypanel')&#xD;
    .find('TABLE .firstCol')&#xD;
    .removeClass('.firstCol')&#xD;
    .css('background' : 'red')&#xD;
    .append('&amp;lt;span&amp;gt;This cell is now red&amp;lt;/span&amp;gt;');&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;Making a habit of using chaining automatically helps you to cut down on your selector use too.&lt;br /&gt;&lt;br /&gt;But it goes further than that. Let's say that you want to perform several functions on an element but one of the first functions changes the element in some way, like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#myTable').find('.firstColumn').css('background','red');&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;We've selected a table, drilled down to find cells with a class of "firstColumn" and coloured them in red.&lt;br /&gt;&lt;br /&gt;Let's say we now want to colour all the cells with a class of "lastColumn" blue. Because we've used the find() funciton we've filtered out all the cells that don't have a class of "firstColumn" so we need to use the selector again to get the table element and we can't continue chaining, right? Luckily jQuery has an end() function which actually reverts back to the previous unaltered selection so you can carry on chaining, like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#myTable')&#xD;
    .find('.firstColumn')&#xD;
        .css('background','red')&#xD;
    .end()&#xD;
    .find('.lastColumn')&#xD;
        .css('background','blue');&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;It's also easier than you might think to write your own jQuery function which can chain. All you have to do is write a function which modifies an element and returns it.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$.fn.makeRed = function() {&#xD;
    return $(this).css('background', 'red');&#xD;
}&#xD;
&#xD;
$('#myTable').find('.firstColumn').makeRed().append('hello');&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;How easy was that?&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;11. Learn to use animate properly&lt;/strong&gt;&lt;/p&gt;&#xD;
When I first started using jQuery I loved the fact that it was easy to use the pre-defined animations like slideDown() and fadeIn() to get some really cool effects incredibly easy. It's easy to take things further though because jQuery's animate() method is very easy to use and very powerful. In fact, is you look at the jQuery source code you'll see that internally those methods are just shortcuts which use the animate() function.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;slideDown: function(speed,callback){&#xD;
    return this.animate({height: "show"}, speed, callback);&#xD;
},&#xD;
&#xD;
fadeIn: function(speed, callback){&#xD;
    return this.animate({opacity: "show"}, speed, callback);&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;The animate() method simply takes any CSS style and smoothly transitions it from one value to another. So, you can change the width, height, opacity, background-color, top, left, margin, color, font-size, anything you want.&lt;br /&gt;&lt;br /&gt;This is how easy it is to animate all your menu items grow to 100 pixels high when you roll over them.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#myList li').mouseover(function() {&#xD;
    $(this).animate({"height": 100}, "slow");&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;Unlike other jQuery functions, animations are automatically queued, so if you want to run a second animation once the first is finished then just call the animate method twice, no callback necessary.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#myBox').mouseover(function() {&#xD;
    $(this).animate({ "width": 200 }, "slow");&#xD;
    $(this).animate({"height": 200}, "slow");&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;If you want the animations to happen concurrently then just put both styles in the params object of a single call, like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#myBox').mouseover(function() {&#xD;
    $(this).animate({ "width": 200, "height": 200 }, "slow");&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;You can animate any property that's numeric. You can also download plugins to help you animate properties that aren't, like &lt;a href="http://plugins.jquery.com/project/color"&gt;colors and background colors&lt;/a&gt;&#xD;
&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;12. Learn about event delegation&lt;/strong&gt;&lt;/p&gt;&#xD;
jQuery makes it easier than ever to attach events to elements in the DOM unobtrusively, which is great, but adding too many events is inefficient. Event delegation allows you to add less events to achieve the same result in many situations. The best way to illustrate this is with an example...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#myTable TD').click(function(){&#xD;
    $(this).css('background', 'red');&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;A simple function which turns cells in a table red when you click on them. Let's say that you've got a grid with 10 columns and 50 rows though, that's 500 events bound. Wouldn't it be neater if we could just attach a single event to the table and when the table is clicked have the event handler work out which cell was clicked before turning it red?&lt;br /&gt;&lt;br /&gt;Well that's exactly what event delegation is and it's easy to implement...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#myTable').click(function(e) {&#xD;
    var clicked = $(e.target);&#xD;
    clicked.css('background', 'red');&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;'e' contains information about the event, including the target element that actually received the click. All we have to do is inspect it to see which cell was actually clicked. Much neater.&lt;br /&gt;&lt;br /&gt;Event delegation has another benefit. Normally, When you bind a handler to a collection of elements it gets attached to those elements and those elements only. If you add new elements to the DOM which would have been matched by the selector then they don't have the event handler bound to them (are you following me?) then nothing will happen.&lt;br /&gt;&lt;br /&gt;When using event delegation you can add as many matching elements to the DOM as you like after the event is bound and they work too.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;13. Use classes to store state&lt;/strong&gt;&lt;/p&gt;&#xD;
This is the most basic way of storing information about a block of html. jQuery is great at manipulating elements based upon their classes, so if you need to store information about the state of an element then why not add an extra class to store it?&lt;br /&gt;&lt;br /&gt;Here's an example. We want to create an expanding menu. When you click the button we want the panel to slideDown() if it's currently closed, or slideUp() if it's currently open. We'll start with the HTML&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;&amp;lt;div &amp;gt;&#xD;
    &amp;lt;div &amp;gt;&#xD;
        click me&#xD;
    &amp;lt;/div&amp;gt;&#xD;
    &amp;lt;div &amp;gt;&#xD;
        &amp;lt;ul&amp;gt;&#xD;
            &amp;lt;li&amp;gt;Menu item 1&amp;lt;/li&amp;gt;&#xD;
            &amp;lt;li&amp;gt;Menu item 2&amp;lt;/li&amp;gt;&#xD;
            &amp;lt;li&amp;gt;Menu item 3&amp;lt;/li&amp;gt;&#xD;
        &amp;lt;/ul&amp;gt;&#xD;
    &amp;lt;/div&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;Very simple! We've just added an extra class to the wrapper div which serves no other purpose other than to tell us the state of the item. So all we need is a click event handler which performs slideUp() or slideDown() on the corresponding panel when the button is clicked.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('.button').click(function() {&#xD;
&#xD;
    var menuItem = $(this).parent();&#xD;
    var panel = menuItem.find('.panel');&#xD;
&#xD;
    if (menuItem.hasClass("expanded")) {&#xD;
        menuItem.removeClass('expanded').addClass('collapsed');&#xD;
        panel.slideUp();&#xD;
    }&#xD;
    else if (menuItem.hasClass("collapsed")) {&#xD;
        menuItem.removeClass('collapsed').addClass('expanded');&#xD;
        panel.slideDown();&#xD;
    }&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;That's a very simple example, but you can add extra classes for storing all sorts of information about an element or HTML fragment.&lt;br /&gt;&lt;br /&gt;However, in all but simple cases it's probably better to use the next tip.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;14. Even better, use jQuery's internal data() method to store state&lt;/strong&gt;&lt;/p&gt;&#xD;
It's not very well documented for some reason but jQuery has an internal data() method which can be used to store information in key/value pairs against any DOM element. Storing a piece of data is as simple as this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#myDiv').data('currentState', 'off');&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;We can amend the example from the previous tip. We'll use the same HTML (with the "expanded" class removed) and use the data() function instead.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('.button').click(function() {&#xD;
&#xD;
    var menuItem = $(this).parent();&#xD;
    var panel = menuItem.find('.panel');&#xD;
&#xD;
    if (menuItem.data('collapsed')) {&#xD;
        menuItem.data('collapsed', false);&#xD;
        panel.slideDown();  &#xD;
    }&#xD;
    else {&#xD;
        menuItem.data('collapsed', true);&#xD;
        panel.slideUp();&#xD;
    }&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;I'm sure you'll agree this is much neater. For more information about data() and removeData(), see this page...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.jquery.com/Internals"&gt;jQuery internals&lt;/a&gt;&#xD;
&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;15. Write your own selectors&lt;/strong&gt;&lt;/p&gt;&#xD;
jQuery has loads of built-in selectors for selecting elements by ID, class, tag, attribute and many more. But what do you do when you need to select elements based upon something else and jQuery doesn't have a selector?&lt;br /&gt;&lt;br /&gt;Well, one answer would be to add classes to the elements from the start and use those to select them, but it turns out that it's not hard to extend jQuery to add new selectors.&lt;br /&gt;&lt;br /&gt;The best way to demonstrate is with an example.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$.extend($.expr[':'], {&#xD;
    over100pixels: function(a) {&#xD;
        return $(a).height() &amp;gt; 100;&#xD;
    }&#xD;
});&#xD;
&#xD;
$('.box:over100pixels').click(function() {&#xD;
    alert('The element you clicked is over 100 pixels high');&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;The first block of code creates a custom selector which finds any element that is more than 100 pixels tall. The second block just uses it to add a click handler to all those elements.&lt;br /&gt;&lt;br /&gt;I won't go into any more detail here but you can imagine how powerful this is and if you search google for "custom jquery selector" you'll find loads of great examples.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;16. Streamline your HTML and modify it once the page has loaded&lt;/strong&gt;&lt;/p&gt;&#xD;
The title might not make a lot of sense but this tip can potentially neaten up your code, reduce the weight and download time of your page and help your SEO. Take the following HTML for example...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;&amp;lt;div &amp;gt;&#xD;
    &amp;lt;div &amp;gt;&#xD;
        &amp;lt;div &amp;gt;This is field number 1&amp;lt;/div&amp;gt;&#xD;
    &amp;lt;/div&amp;gt;&#xD;
    &amp;lt;div &amp;gt;&#xD;
        &amp;lt;div &amp;gt;&amp;lt;img src="icon.png" alt="icon" /&amp;gt;&amp;lt;/div&amp;gt;&#xD;
        &amp;lt;div &amp;gt;&amp;lt;span&amp;gt;This is an error message&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#xD;
    &amp;lt;/div&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&#xD;
&amp;lt;div &amp;gt;&#xD;
    &amp;lt;div &amp;gt;&#xD;
        &amp;lt;div &amp;gt;This is field number 2&amp;lt;/div&amp;gt;&#xD;
    &amp;lt;/div&amp;gt;&#xD;
    &amp;lt;div &amp;gt;&#xD;
        &amp;lt;div &amp;gt;&amp;lt;img src="icon.png" alt="icon" /&amp;gt;&amp;lt;/div&amp;gt;&#xD;
        &amp;lt;div &amp;gt;&amp;lt;span&amp;gt;This is an error message&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&#xD;
    &amp;lt;/div&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;That's an example of how a form might be marked up, modified slightly for illustrative purposes. I'm sure you'll agree it's pretty ugly and if you had a long form you'd end up with a fairly long ugly page. It's be nicer if you could just put this in your HTML.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;&amp;lt;div &amp;gt;This is field 1&amp;lt;/div&amp;gt;&#xD;
&amp;lt;div &amp;gt;This is field 2&amp;lt;/div&amp;gt;&#xD;
&amp;lt;div &amp;gt;This is field 3&amp;lt;/div&amp;gt;&#xD;
&amp;lt;div &amp;gt;This is field 4&amp;lt;/div&amp;gt;&#xD;
&amp;lt;div &amp;gt;This is field 5&amp;lt;/div&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;All you have to do is a bit of jQuery manipulation to add all the ugly HTML back in. Like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$(document).ready(function() {&#xD;
    $('.field').before('&amp;lt;div &amp;gt;&amp;lt;div &amp;gt;');&#xD;
    $('.field').after('&amp;lt;/div&amp;gt;&amp;lt;div &amp;gt;&amp;lt;div &amp;gt;&#xD;
        &amp;lt;img src="icon.png" alt="icon" /&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div &amp;gt;&#xD;
        &amp;lt;span&amp;gt;This is an error message&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;');&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;It's not always advisable to do this, you'll get a bit of a flash as the page loads, but in certain situations where you've got a lot of repeated HTML it can really reduce your page weight and the SEO benefits of reducing all your repeated extraneous markup should be obvious.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;17. Lazy load content for speed and SEO benefits&lt;/strong&gt;&lt;/p&gt;&#xD;
Another way to speed up your page loads and neaten up the HTML that search spiders see is to lazy load whole chunks of it using an AJAX request after the rest of the page has loaded. The user can get browsing right away and spiders only see the content you want them to index.&lt;br /&gt;&lt;br /&gt;We've used this technique on our own site. Those purple buttons at the top of the page drop down 3 forms, directions and a google map, which was doubling the size of our pages. So, we just put all that HTML in a static page and use the load() function to load it in once the DOM was ready. Like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#forms').load('content/headerForms.html', function() {&#xD;
    // Code here runs once the content has loaded&#xD;
    // Put all your event handlers etc. here.            &#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;I wouldn't use this everywhere. You have to consider the trade offs here. You're making extra requests to the server and portions of your page might not be available to the user right away, but used correctly it can be a great optimization technique.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;18. Use jQuery's utility functions&lt;/strong&gt;&lt;/p&gt;&#xD;
jQuery isn't just about flash effects. The creator has exposed some really useful methods which fill a few gaps in JavaScript's repertoire.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.jquery.com/Utilities"&gt;http://docs.jquery.com/Utilities&lt;/a&gt;&lt;br /&gt;&#xD;
&lt;br /&gt;In particular, browser support for certain common array functions is patchy (IE7 doesn't even have an indexOf() method!). Jquery has methods for iterating, filtering, cloning, merging and removing duplicates from Arrays.&lt;br /&gt;&lt;br /&gt;Other common functions that are difficult in Javascript include getting the selected item in a drop down list. In plain old JavaScript you'd have to get the &amp;lt;select&amp;gt; element using getElementByID, get the child elements as an array and iterate through them checking whether each one was selected or not. jQuery makes it easy...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#selectList').val();&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;It's worth spending some time looking through the jQuery documentation on the main site and having a nose around some of the lesser known functions.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;19. Use noconflict to rename the jquery object when using other frameworks&lt;/strong&gt;&lt;/p&gt;&#xD;
Most javascript frameworks make use of the $ symbol as a shorthand and this can cause clashes when trying to use more than one framework on the same page. Luckily there's a simple solution. The .noconflict() function gives control of the $ back and allows you to set your own variable name, like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;var $j = jQuery.noConflict();&#xD;
$j('#myDiv').hide();&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;20. How to tell when images have loaded&lt;/strong&gt;&lt;/p&gt;&#xD;
This is another one of those problems that doesn't seem to be as well documented as it should be (not when I went looking anyway) and it's a fairly common requirement when building photo galleries, carousels etc,  but it's fairly easy.&lt;br /&gt;&lt;br /&gt;All you have to do is use the .load() method on an IMG element and put a callback function in it. The following example changes the "src" attribute of an image tag to load a new image and attaches a simple load function.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('#myImage').attr('src', 'image.jpg').load(function() {&#xD;
    alert('Image Loaded');&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;You should find that the alert is called as soon as the image is loaded.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;21. Always use the latest version&lt;/strong&gt;&lt;/p&gt;&#xD;
jQuery is constantly improving and John Resig, it's creator, always seems to be in search of ways to improve performance.&lt;br /&gt;&lt;br /&gt;jQuery is currently on version 1.2.6 but John has already revealed that he's working on a new selector engine called &lt;a href="http://ajaxian.com/archives/sizzle-john-resig-has-a-new-selector-engine"&gt;Sizzle&lt;/a&gt;, which may apparently improve selector speeds in Firefox by up to 4x. So, it pays to keep up to date.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;22. How to check if an element exists&lt;/strong&gt;&lt;/p&gt;&#xD;
You don't need to check if an element exists on the page before you manipulate it because jQuery will will simply do nothing if you try to select something and it isn't in the DOM. But when you do need to check if anything has been selected, or how many items have been selected you can use the length property.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;if ($('#myDiv).length) {&#xD;
    // your code&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;Simple, but not obvious.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;23. Add a JS class to your HTML attribute&lt;/strong&gt;&lt;/p&gt;&#xD;
I learned this tip from Karl Swedberg whose &lt;a href="http://www.amazon.co.uk/Learning-JQuery-Interaction-Development-Javascript/dp/1847192505/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1229284831&amp;amp;sr=8-1"&gt;excellent&lt;/a&gt; &lt;a href="http://www.amazon.co.uk/JQuery-Reference-Guide-Karl-Swedberg/dp/1847193811/ref=sr_1_3?ie=UTF8&amp;amp;s=books&amp;amp;qid=1229284831&amp;amp;sr=8-3"&gt;books&lt;/a&gt; I used to learn jQuery.&lt;br /&gt;&lt;br /&gt;He recently left a comment on one of my previous articles about this technique and the basics are as follows...&lt;br /&gt;&lt;br /&gt;Firstly, as soon as jQuery has loaded you use it to add a "JS" class to your HTML tag.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('HTML').addClass('JS');&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;Because that only happens when javascript is enabled you can use it to add CSS styles which only work if the user has JavaScript switched on, like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;.JS #myDiv{display:none;}&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;So, what this means is that we can hide content when JavaScript is switched on and then use jQuery to show it when necessary (e.g. by collapsing some panels and expanding them when the user clicks on them), while those with JavaScript off (and search engine spiders) see all of the content as it's not hidden. I'll be using this one a lot in the future.&lt;br /&gt;&lt;br /&gt;To read his full article &lt;a href="http://www.learningjquery.com/2008/10/1-awesome-way-to-avoid-the-not-so-excellent-flash-of-amazing-unstyled-content"&gt;click here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;24. Return 'false' to prevent default behaviour&lt;/strong&gt;&lt;/p&gt;&#xD;
This should be an obvious one but maybe not.  if you have a habit of doing this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;&amp;lt;a href="#" &amp;gt;Click me!&amp;lt;/a&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;... and then attaching an event handler like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('popup').click(function(){&#xD;
    // Launch popup code&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;... it'll probably work fine until you use it on a long page, at which point you'll notice that the # is causing it to jump to the top of the page when your click event is triggered.&lt;br /&gt;&lt;br /&gt;All you have to do to prevent this default behaviour, or indeed any default behaviour on any event handler is to add "return false;" to your handler, like this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$('popup').click(function(){&#xD;
    // Launch popup code&#xD;
    return false;&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;&#xD;
&lt;p&gt;&lt;strong&gt;25. Shorthand for the ready event&lt;/strong&gt;&lt;/p&gt;&#xD;
A small tip this one but you can save a few characters by using shorthand for the $(document).ready function.&lt;br /&gt;&lt;br /&gt;Instead of this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$(document).ready(function (){&#xD;
    // your code&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;br /&gt;You can do this...&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;pre &gt;$(function (){&#xD;
    // your code&#xD;
});&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/ttzhang/aggbug/1808908.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ttzhang/archive/2010/08/26/improve-your-jquery-25-excellent-tips.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ttzhang/archive/2010/04/27/RunPhpOnIIS7viaFastCGI.html</id><title type="text">IIS7.0通过FastCGI方式运行PHP遇到的一些问题及解决方法</title><summary type="text">经过二天的努力，终于把PHP网站从Apache迁移到IIS7上面，迁移过程中遇到一些问题，在这里和大家分享一下。</summary><published>2010-04-26T16:04:00Z</published><updated>2010-04-26T16:04:00Z</updated><author><name>上不了岸的鱼</name><uri>http://www.cnblogs.com/ttzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ttzhang/archive/2010/04/27/RunPhpOnIIS7viaFastCGI.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ttzhang/archive/2010/04/27/RunPhpOnIIS7viaFastCGI.html"/><content type="html">&lt;p&gt;经过二天的努力，终于把PHP网站从Apache迁移到IIS7上面，迁移过程中遇到一些问题，在这里和大家分享一下。 至今仍有一个问题，希望大家帮忙指点。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本文不会涉及如下内容： &lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;&#xD;
&lt;div style="text-align: justify;"&gt;&lt;strong&gt;IIS7的安装 &lt;/strong&gt;&lt;/div&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;li&gt;&#xD;
&lt;div style="text-align: justify;"&gt;&lt;strong&gt;FastCGI For IIS7.0的安装和配置 &lt;/strong&gt;&lt;/div&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;li&gt;&#xD;
&lt;div style="text-align: justify;"&gt;&lt;strong&gt;UrlScan的安装和配置 &lt;/strong&gt;&lt;/div&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;li&gt;&#xD;
&lt;div style="text-align: justify;"&gt;&lt;strong&gt;如何配置IIS7.0来运行PHP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;/div&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;li&gt;&#xD;
&lt;div style="text-align: justify;"&gt;&lt;strong&gt;为什么要把PHP网站从Apache迁移到IIS7上面&lt;/strong&gt; &lt;/div&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果您想了解上面的内容，你可以到&lt;a href="http://www.iis.net"&gt;&lt;span style="color: #0000ff;"&gt;http://www.iis.net&lt;/span&gt;&lt;/a&gt;和&lt;a href="http://www.php.net"&gt;&lt;span style="color: #0000ff;"&gt;http://www.php.net&lt;/span&gt;&lt;/a&gt;网站查看相关内容，在搜索引擎中也能找到很多参考资料。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在IIS7.0上以FastCGI方式配置好PHP运行环境，测试可以正常运行PHP程序后，将PHP程序部署上去，导入程序原来的数据和配置信息。由于Apache服务器在占用80端口，所以先停止Apache并设置IIS7.0使用80端口运行网站。 PHP程序终于在IIS7.0上跑起来了，看起来还不错，哈哈&amp;hellip;&amp;hellip; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;不过好像高兴的太早，很快就有问题出来啦&lt;span style="font-family: Wingdings;"&gt;L&lt;/span&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;一、某些图片无法显示 &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我的同事发现有不少图片无法显示。我感觉很奇怪，既然在Apache上没有问题，迁移到IIS7.0后，域名和文件路径均没有变化，不应该出现问题呀。我马上开始确认和排查问题，首先，根据同事的提供信息查看页面，果然很多图片无法显示；然后，我就随机看了网站中的图片，发现有些图片可以正常显示，而且不能正常显示的图片，都是路径中包含了日文或中文字符，这是为什么呢？？？ &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;疯狂的折腾了一通之后，还是没有头绪，没有办法只能重新再浏览器中打开一张图片，希望可以从错误信息中找到一些有用的东西，只有404 File Not Found错误，没有其他有价值的参考信息。这时候我远程连接到服务器，在服务器上访问，哈哈&amp;hellip;&amp;hellip;错误信息就比较详细了，如下图： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img height="417" width="843" src="http://pic002.cnblogs.com/img/ttzhang/201004/2010042700130545.png" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;OMG，是UrlScan拒绝了该请求，在UrlScan的日志目录C:\Windows\System32\inetsrv\urlscan\logs\中打开一个日志文件，发现很多类似 "Rejected URL+contains+high+bit+character URL"的记录，这又是为什么呢？？？原来IIS7.0上安装UrlScan后，所有的请求都会经过aspnet_filter和Request Filtering的过滤，Request Filtering的过滤规则就在UrlScan的安装目录C:\Windows\System32\inetsrv\urlscan\UrlScan.ini文件中，其中有这样一个规则AllowHighBitCharacters=0，IIS官网的解释是：&lt;span style="color: #5b5b5b; font-size: 9pt;"&gt;&lt;span style="font-family: Tahoma;"&gt; This feature either allows or rejects all requests to IIS 7 that contain non-ASCII characters and logs the error code 404.12&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，允许或拒绝所有包含非&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;ASCII&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;字符的请求并在日志中记录&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;404.12&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;错误，该规则默认为&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt;0&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;，也就拒绝包含高位字符的请求&lt;/span&gt;&lt;span style="font-family: Tahoma;"&gt; URL&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。我们将&lt;/span&gt;&lt;/span&gt;AllowHighBitCharacters的值改为1，图片终于可以正常显示了。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;关于AllowHighBitCharacters的配置，UrlScan.ini中配置的规则是整个机器级别的，IIS7.0上的所有网站都适用。根据IIS官网的说明，还可以在网站级别配置。在IIS管理器中，你可以在左侧选择指定的网站后，在中间的功能区域选择"Request Filtering"，双击该功能，在右侧的操作区域中点击"Edit Feature Settings"后，选中或者取消"allow high-bit characters"项即可；也可以直接在网站的web.config中添加如下内容： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/ttzhang/042610_1604_IIS70FastCG2.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;但是，根据我的测试，如果在UrlScan.ini中配置AllowHighBitCharacters=0，那么在网站级别按照上面在web.config中配置AllowHighBitCharacters="true"，根本就不起作用，IIS7.0依然拒绝处理路径中含有非ASCII字符的请求；如果在UrlScan.ini中配置AllowHighBitCharacters=1，那么在网站级别按照上面在web.config中配置AllowHighBitCharacters="true|false"就会起作用。&lt;/p&gt;&#xD;
&lt;p&gt;这又是为什么呢？希望有高手指点一下。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;二、&lt;span style="font-size: 16pt;"&gt;很多基于JQuery的功能失效了&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;日期选择框失效了，弹出层失效了，输入验证失效了&amp;hellip;&amp;hellip;可是，这又是为什么呢？&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;还好吃一堑长一智，这次直接去看UrlScan的日志，发现加载JS的记录很多都是" Rejected URL+contains+dot+in+path URL"，然后就去看UrlScan.ini中的配置，在AllowHighBitCharacters下面有一个AllowDotInPath的配置，默认值也是0，也就是不允许在Url中出现除了扩展名之外的点字符[.]，大家知道JQuery库和很多扩展插件的文件名称中都有点字符[.]，将AllowDotInPath的值修改为1，打开网站就没有问题了，哈哈：） &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt;UrlScan.ini中关于AllowDotInPath的说明，除了测试外不建议将其设置为1，因为如果设置1，基于扩展名的检查将不在可信。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这二个问题解决后，从Apache迁移PHP程序到IIS7.0也算完成了。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;最后，还有一个问题，就是我们的php网站在IIS7.0上运行，访问的时候，偶尔会有页面空白的情况发生，等一段时间就好了，直接回收或者重启进程池后也会好，不知道是什么问题？希望有了解此问题的园友，不吝赐教，给些指点，先在此谢过！ &lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="text-decoration: line-through;"&gt;说明：这个问题已经解决，具体的操作就是减小http连接时间，同时增加应用程序池中的最大连接数和并发连接数。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;参考: &lt;/p&gt;&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;&#xD;
&lt;div style="text-align: justify;"&gt;&lt;a href="http://learn.iis.net/page.aspx/143/use-request-filtering/"&gt;&lt;span style="color: #0000ff;"&gt;http://learn.iis.net/page.aspx/143/use-request-filtering/&lt;/span&gt;&lt;/a&gt; &lt;/div&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;li&gt;&#xD;
&lt;div style="text-align: justify;"&gt;&lt;a href="http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-7/"&gt;&lt;span style="color: #0000ff;"&gt;http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-7/&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&#xD;
&lt;/li&gt;&#xD;
&lt;/ol&gt;&lt;img src="http://www.cnblogs.com/ttzhang/aggbug/1721673.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ttzhang/archive/2010/04/27/RunPhpOnIIS7viaFastCGI.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ttzhang/archive/2010/04/26/Microsoft-FTP7_5-For-IIS7-x.html</id><title type="text">Microsoft FTP7.5 For IIS7.x使用中的一些问题及解决方法</title><summary type="text">最近在IIS7.0上安装了Microsoft FTP7.5，但是使用FTP7.5的过程中，却遇到不少问题，在网上找到有用资料不多，经过一个下午的摸索，在这里分享出来，希望可以帮助那些在使用Microsoft FTP7.5时遇到类似问题的朋友。</summary><published>2010-04-25T16:41:00Z</published><updated>2010-04-25T16:41:00Z</updated><author><name>上不了岸的鱼</name><uri>http://www.cnblogs.com/ttzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ttzhang/archive/2010/04/26/Microsoft-FTP7_5-For-IIS7-x.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ttzhang/archive/2010/04/26/Microsoft-FTP7_5-For-IIS7-x.html"/><content type="html">&lt;p&gt;最近在IIS7.0上安装了Microsoft FTP7.5，但是使用FTP7.5的过程中，却遇到不少问题，在网上找到有用资料不多，经过一个下午的摸索，在这里分享出来，希望可以帮助那些在使用Microsoft FTP7.5时遇到类似问题的朋友。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本文仅仅说明Microsoft FTP7.5 For IIS7.x的设置问题，包括ftp站点建立和设置、用户权限设置等等。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本文内容不会涉及如下内容： &lt;/p&gt;&#xD;
&lt;ol&gt;&lt;li&gt;&#xD;
&lt;div style="text-align: justify"&gt;&lt;strong&gt;其他可替代Microsoft FTP7.5功能软件的安装与使用 &lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;div style="text-align: justify"&gt;&lt;strong&gt;如何创建Windows用户和组 &lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;div style="text-align: justify"&gt;&lt;strong&gt;如何安装IIS7.x &lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;div style="text-align: justify"&gt;&lt;strong&gt;如何安装Microsoft FTP7.5 For IIS7.x &lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;div style="text-align: justify"&gt;&lt;strong&gt;如何设置和使用Microsoft FTP7.5的SSL功能 &lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;div style="text-align: justify"&gt;&lt;strong&gt;如何设置和使用Microsoft FTP7.5的用户隔离功能 &lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&#xD;
&lt;p&gt;如果你希望了解以上内容，可以参考&lt;a style="color: #0000ff" href="http://www.iis.net/" target="_blank"&gt;http://www.iis.net/&lt;/a&gt;和微软网站的相关说明。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我要实现的目标： &lt;/p&gt;&#xD;
&lt;p&gt;在系统中创建FTP Users用户组，并在该用户组下创建bimoo、bimooftp二个用户。 &lt;/p&gt;&#xD;
&lt;p&gt;用户bimoo可以查看整个FTP站点的内容列表，同时拥有该站点中的子应用程序upload的读写权限，但不能查看和读写子应用程序upload以外的任何内容；bimooftp拥有整个站点的读写权限。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们首先按照正确的方式操作一遍，文章最后会列出使用过程中遇到的一些问题。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;打开IIS管理器，右键点击"服务器名称"或"网站"节点，选择"Add FTP Site"，如下图： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/042510_1640_MicrosoftFT1.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;然后输入FTP 网站名称，选择内容目录的物理路径，点击"下一步"按钮，弹出如下窗口： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/042510_1640_MicrosoftFT2.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;不要选中上面的"Enable Virtual Host Name"项，如果选中，建立网站后，使用FTP客户端连接，会出现如下错误： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/042510_1640_MicrosoftFT3.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;SSL可以根据实际情况设置，这里选择"Allow SSL"，然后点击"下一步"按钮，弹出如下窗口： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/042510_1640_MicrosoftFT4.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;这里启用Basic认证[Authentication]类型，在授权[Authorization]选项中选择允许"指定用户[Specified Users]"访问，并输入用户名，多个用户名使用逗号[,]，选择相应的权限[Permissions]后，点击"完成"按钮。然后想这个FTP站点中添加二个"应用程序"或"虚拟目录"，这时候一个FTP站点就建立好了。 &lt;/p&gt;&#xD;
&lt;p&gt;我这里建立的FTP站点名称是"ftp_server"，其中有sites和upload二个应用程序，大致结构如下图所示： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/042510_1640_MicrosoftFT5.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;下面开始说一下用户授权的问题，我这里不允许匿名用户访问，所以我在站点的"FTP Authentication"中启用"Basic Authentication"认证类型，禁用了"Anonymous Authentication"。然后在"FTP Authorization Rules"中添加授权规则，如下图： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/042510_1640_MicrosoftFT6.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;给ftp_server中的应用程序sites中的"FTP Authorization Rules"中添加授权规则，如下图： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/042510_1640_MicrosoftFT7.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;给ftp_server中的应用程序upload中的"FTP Authorization Rules"中添加授权规则，如下图： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/042510_1640_MicrosoftFT8.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: red"&gt;&lt;strong&gt;说明：&lt;/strong&gt;&lt;/span&gt;由于这里用户bimooftp和bimoo都隶属FTP Users用户组，而且他们都具有Read,Write权限，所以也可以直接给用户组FTP Users设置规则。另外，子应用程序和虚拟目录会自动继承整个FTP站点的授权规则，这里我删除了继承来的规则，添加自己的规则。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;还有一个问题，在站点的"FTP Directory Browsing"中，"Directory Listing Style"中一定选择"MS-DOS"，如果选择"UNIX"，那么使用ftp客户端连接时，无法列出目录和文件列表。如下图： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/042510_1640_MicrosoftFT9.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;OK，如果您安装上面的步骤做完，那么就应该实现目标了，用户bimoo可以读写upload应用程序，可以查看整个FTP站点的内容列表，但是却不能查看或读写sites应用程序的内容；bimooftp用户拥有这个站点的查看和读写权限。现在使用FTP客户端试一下吧。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下面开始说一下我安装过程中遇到的问题： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;ol&gt;&lt;li&gt;&#xD;
&lt;div style="text-align: justify"&gt;&lt;strong&gt;用户授权不当&lt;/strong&gt; &lt;/div&gt;&#xD;
&lt;p&gt;刚开始对用户进行授权的时候，给用户bimooftp授予整个FTP站点的读写权限，没有给用户bimoo授予任何权限；然后给用户bimoo授予FTP站点子应用程序sites的读写权限。此时用户bimooftp可以连接ftp站点，但用户bimoo连接子应用程序sites时，却出现下面的错误： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/042510_1640_MicrosoftFT10.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;解决方法： &lt;/p&gt;&#xD;
&lt;p&gt;在FTP站点级别授予用户bimoo读权限。如果希望把虚拟目录或者子应用程序授权给用户，必须保证给用户对其父目录或站点至少拥有读权限。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;div style="text-align: justify"&gt;&lt;strong&gt;FTP站点绑定域名&lt;/strong&gt; &lt;/div&gt;&#xD;
&lt;p&gt;如果给FTP站点绑定域名，比如ftp://ftp.bmshops.com，那么就会出现下面的错误： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/ttzhang/042510_1640_MicrosoftFT11.png" /&gt; &lt;/p&gt;&#xD;
&lt;p&gt;解决方法： &lt;/p&gt;&#xD;
&lt;p&gt;不要给FTP站点绑定域名，主机头留空即可。这样就不能建立多个FTP站点，不知道有没有更好的方法解决这个问题。 &lt;/p&gt;&#xD;
&lt;p&gt;后来在IIS的官方网站中的一篇文章中找到答案，文章地址如下： &lt;/p&gt;&#xD;
&lt;p&gt;&lt;a style="color: #0000ff" href="http://learn.iis.net/page.aspx/320/using-ftp-virtual-host-names/" target="_blank"&gt;http://learn.iis.net/page.aspx/320/using-ftp-virtual-host-names/&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;由于FTP7.5提供了类似Web站点功能的虚拟主机[Virtual Host]功能，多个FTP站点都可以使用21端口和相同的IP地址，所以在访问FTP站点的时候，用户名需要使用VirtualHost|UserName的形式，否则就会发生"503 Valid hostname is expected"错误。 &lt;/p&gt;&#xD;
&lt;p&gt;这样就解决了FTP站点绑定域名和建立多个FTP站点的问题，哈哈：） &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;div style="text-align: justify"&gt;&lt;strong&gt;FTP站点设置不当&lt;/strong&gt; &lt;/div&gt;&#xD;
&lt;p&gt;刚开始由于设置不当，导致FTP客户端连接可以成功，但是无法列出目录和文件。后来网搜了一下，大部分都说将FTP客户端的数据连接类型改为被动模式[PASV Mode]，但还是不行。后来发现，在FTP服务器端把Directory Listing Style设置成了UNIX，设置为MS-DOS后解决。 &lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;参考： &lt;/p&gt;&#xD;
&lt;ol&gt;&lt;li&gt;&#xD;
&lt;div style="text-align: justify"&gt;&lt;a style="color: #0000ff" href="http://learn.iis.net/page.aspx/320/using-ftp-virtual-host-names/" target="_blank"&gt;http://learn.iis.net/page.aspx/320/using-ftp-virtual-host-names/&lt;/a&gt; &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&#xD;
&lt;div style="text-align: justify"&gt;&lt;a style="color: #0000ff" href="http://learn.iis.net/page.aspx/263/installing-and-configuring-ftp-on-iis-7/" target="_blank"&gt;http://learn.iis.net/page.aspx/263/installing-and-configuring-ftp-on-iis-7/&lt;/a&gt; &lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;基本就写这些吧，欢迎大家指点、拍砖，来者不拒！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ttzhang/aggbug/1720875.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ttzhang/archive/2010/04/26/Microsoft-FTP7_5-For-IIS7-x.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ttzhang/articles/1491666.html</id><title type="text">Enterprise Continuous Integration with Binary Dependencies example </title><summary type="text">原文http://confluence.public.thoughtworks.org/display/CCNET/Enterprise+Continuous+Integration+with+Binary+Dependencies+exampleAdded by Mike Roberts , last edited by Mike Roberts on Jan 15, 2007 (view ch...</summary><published>2009-05-29T05:35:00Z</published><updated>2009-05-29T05:35:00Z</updated><author><name>上不了岸的鱼</name><uri>http://www.cnblogs.com/ttzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ttzhang/articles/1491666.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ttzhang/articles/1491666.html"/></entry><entry><id>http://www.cnblogs.com/ttzhang/articles/1491665.html</id><title type="text">Setting up from scratch Part 01 </title><summary type="text">原文：http://confluence.public.thoughtworks.org/display/CCNET/Setting+up+from+scratch++Part+01Added by Ruben Willems , last edited by Ruben Willems on Sep 29, 2007 (view change) We'll be setting it up st...</summary><published>2009-05-29T05:33:00Z</published><updated>2009-05-29T05:33:00Z</updated><author><name>上不了岸的鱼</name><uri>http://www.cnblogs.com/ttzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ttzhang/articles/1491665.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ttzhang/articles/1491665.html"/></entry><entry><id>http://www.cnblogs.com/ttzhang/archive/2008/12/14/1354972.html</id><title type="text">关于近日园子里“译书风波”一点个人看法</title><summary type="text">译书风波专题话题：http://www.cnblogs.com/topic/28/首页所有关于此风波的文章，已经全部被移到该话题，关注的朋友们可以去那里发表自己的意见。最近园子里真可谓"热闹"，我在这里首先回顾一下：先是老赵下面的一篇文章激起很多园友的强烈反应：&#xD;和谐社区，和谐技术：微软的宠儿们，为什么富人的孩子就不能早当家？	很多人同意老赵这篇文章中的观点，也有很多人反对，我个人很支持老赵，首先...</summary><published>2008-12-14T14:35:00Z</published><updated>2008-12-14T14:35:00Z</updated><author><name>上不了岸的鱼</name><uri>http://www.cnblogs.com/ttzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ttzhang/archive/2008/12/14/1354972.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ttzhang/archive/2008/12/14/1354972.html"/></entry><entry><id>http://www.cnblogs.com/ttzhang/archive/2008/12/10/1352014.html</id><title type="text">50个极为有用和强大的CSS工具</title><summary type="text">50 Extremely Useful And Powerful CSS ToolsWe love useful stuff. For months, we have been bookmarking interesting, useful and creative CSS tools and related resources. We have been contacting developer...</summary><published>2008-12-10T07:40:00Z</published><updated>2008-12-10T07:40:00Z</updated><author><name>上不了岸的鱼</name><uri>http://www.cnblogs.com/ttzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ttzhang/archive/2008/12/10/1352014.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ttzhang/archive/2008/12/10/1352014.html"/></entry></feed>
