<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Robot.Net's TechNet</title><subtitle type="text">Focus .Net Technology</subtitle><id>http://feed.cnblogs.com/blog/u/21924/rss</id><updated>2011-12-13T01:30:12Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/21924/rss"/><entry><id>http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285593.html</id><title type="text">StyleCop 官网</title><summary type="text">http://stylecop.codeplex.com/</summary><published>2011-12-13T01:30:00Z</published><updated>2011-12-13T01:30:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285593.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285593.html"/><content type="html">&lt;p&gt;&lt;a href="http://stylecop.codeplex.com/"&gt;http://stylecop.codeplex.com/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2285593.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285593.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285592.html</id><title type="text">微软发布编码风格强制工具StyleCop</title><summary type="text">http://developer.51cto.com/art/200806/76365.htm 制编码风格是一个长期被热烈争论的话题。人们不仅为团队应该遵循何种编码风格而争论不休，同时还要争论究竟是否应该确立一个标准的编码风格。现在，微软发布了StyleCop，这是他们在内部使用的一个编码风格强制工具，微软的这一举措无疑将起到推波助澜的作用。 StyleCop，也即所谓的微软C#源代码分析器（...</summary><published>2011-12-13T01:29:00Z</published><updated>2011-12-13T01:29:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285592.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285592.html"/><content type="html">&lt;p&gt;&lt;a href="http://developer.51cto.com/art/200806/76365.htm"&gt;http://developer.51cto.com/art/200806/76365.htm&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;制编码风格是一个长期被热烈争论的话题。人们不仅为团队应该遵循何种编码风格而争论不休，同时还要争论究竟是否应该确立一个标准的编码风格。现在，微软发布了StyleCop，这是他们在内部使用的一个编码风格强制工具，微软的这一举措无疑将起到推波助澜的作用。&lt;/p&gt;  &lt;p&gt;StyleCop，也即所谓的微软C#源代码分析器（Microsoft Source Analysis for C#），用途和FxCop相似，只不过作用对象是源代码。此外，它和FxCop一样是源于微软的内部工具，在发展到一定程度之后，微软觉得对其他人也有 用，于是被公开发布。不过，StyleCop的自定义程度不如FxCop那么高。&lt;/p&gt;  &lt;p&gt;Source Analysis的最终目标是允许你生成优雅、一致的代码，让你的团队成员和其他查看你代码的人容易阅读。为达到这一目的，Source Analysis不允许它的规则被过多的配置。Source Analysis使用一种统一的方式来处理代码风格、布局和可读性规则。你很可能并不认同所有的规则，甚至会发现某些规则并非如你所愿。然而，在微软内部 使用这个工具的大部分团队在经过短暂的调整期后，都能够欣然接受Source Analysis强制要求的这些规则，甚至开始认为如果不使用这种风格来编写代码，就很难阅读。&lt;/p&gt;  &lt;p&gt;Jason Allor声称由这个工具所强制要求的大约200条规则与Visual Studio的默认设置是兼容的。遗憾的是，他忘记提到Visual Studio具有6个完全不同的默认设置集合，其中多数与这个工具互相矛盾的。&lt;/p&gt;  &lt;p&gt;这个工具涉及的方面包括：&lt;/p&gt;  &lt;p&gt;·支持文件内容&lt;/p&gt;  &lt;p&gt;·调试文本&lt;/p&gt;  &lt;p&gt;·编排元素头和文件头中的文档格式   &lt;br /&gt;·元素、语句、表达式和查询子句的布局&lt;/p&gt;  &lt;p&gt;·行空格&lt;/p&gt;  &lt;p&gt;·元素、字段和变量的命名&lt;/p&gt;  &lt;p&gt;·大括号、圆括号、方括号等的位置&lt;/p&gt;  &lt;p&gt;·在方法声明或方法调用中方法参数的位置&lt;/p&gt;  &lt;p&gt;·关键字和操作符周围的空格&lt;/p&gt;  &lt;p&gt;·在类中元素的标准顺序&lt;/p&gt;  &lt;p&gt;·访问修饰符的使用&lt;/p&gt;  &lt;p&gt;·内置类型的使用&lt;/p&gt;  &lt;p&gt;在空白的控制台应用程序上运行这些规则，会返回9个错误，如果你打开“Keep Tabs”设置，则会出现16个错误。一些规则稍显笨拙，例如要求“using”指示符必须放在命名空间内，而不是放在文件顶部。&lt;/p&gt;  &lt;p&gt;已经有人在抱怨这个工具缺乏校正的支持。Dustin Norman写道：&lt;/p&gt;  &lt;p&gt;在将这个工具运行在一个较小的程序集上时，这个工具要我手动修改561个违规错误，而它却不能在不影响代码语义的基础上自动为我修复错误——这真的要让我崩溃了！&lt;/p&gt;  &lt;p&gt;古老的tabs vs spaces争论【译者注：即代码的缩进是用Tabs来实现还是用Spaces来实现】又被提及，而且我们还不能禁用这一规则。Nick Berardi写道：&lt;/p&gt;  &lt;p&gt;真是开玩笑。Tabs居然不被允许。相反，只能使用空格。这个主意糟透了，因为它会破坏语句块的布局，例如一个变量使用3个空格，而其他变量则使用了4个。无论如何，应该允许禁用类似tab规则这样毫无意义的规则。   &lt;br /&gt;如 果能够禁用这些规则，这个工具就更好了。我知道你会说他们已经够好了。但是我完全不同意使用空格来代替tab。这是毫无逻辑可言的，或许只有在Vi编辑器 第一次出现从而引发了开发人员之间的“圣战”可堪比拟吧。我喜欢用Tab的方式编写我的代码，但它总是警告我，我的每行代码都有tab在其中。&lt;/p&gt;  &lt;p&gt;同时，Daniel Stolt也问到了关于VB的情况：&lt;/p&gt;  &lt;p&gt;为.NET开发人员提供一些额外工具总是受欢迎的——但为什么只有C#的？代码格式的强制规则对于VB开发人员来说也是非常需要的。   &lt;br /&gt;显然，VB代码编辑器在对关键字和操作符进行缩进和空格的处理中，已经具有自动格式化的一些初步支持，但还不够接近StyleCop所支持的效果。&lt;/p&gt;  &lt;p&gt;顺便说来，我完全同意Nick Berardi对于tabs vs spaces的观点：使用tabs有什么问题？难道按4-5次方向按钮比直接指向某个位置更有某种优势？还是在源代码文件中保存4-5个空白字符存在着某种好处？&lt;/p&gt;  &lt;p&gt;在支持自动校正方面确实存在一些问题，目前还没有给出解决这个问题的时间表呢。&lt;/p&gt;  &lt;p&gt;查看英文原文：&lt;a href="http://www.google.com/url?q=http%3A%2F%2Fwww.infoq.com%2Fnews%2F2008%2F05%2FStyleCop&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFrqEzfqnT1MJmPpk30CIjZ3q-mUXUyZtA"&gt;StyleCop – Microsoft's Style Enforcement Tool for C#&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2285592.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285592.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285590.html</id><title type="text">[转] C#代码检查工具：stylecop</title><summary type="text">http://minmin86121.blog.163.com/blog/static/49681157201182044847408/ 微软的StyleCop作为一款代码分析插件，集成到Visual Studio 2008和Visual Studio 2010之中，可以帮助开发人员迅速地理清编程规范问题。对确保软件质量，确保软件开发效率而言，意义非凡。与同样出自微软的另一款代码分析工具fxco...</summary><published>2011-12-13T01:28:00Z</published><updated>2011-12-13T01:28:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285590.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285590.html"/><content type="html">&lt;p&gt;&lt;a href="http://minmin86121.blog.163.com/blog/static/49681157201182044847408/"&gt;http://minmin86121.blog.163.com/blog/static/49681157201182044847408/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;微软的StyleCop作为一款代码分析插件，集成到Visual Studio 2008和Visual Studio 2010之中，可以帮助开发人员迅速地理清编程规范问题。对确保软件质量，确保软件开发效率而言，意义非凡。与同样出自微软的另一款代码分析工具fxcop通过分析程序集来检查各类编程规范错误不同的是，StyleCop是针对C#源代码的分析工具。有点类似java的checkstyle。&lt;/p&gt;  &lt;p&gt;StyleCop可以检查代码中的各类静态编程规范错误，从代码注释，代码布局，可维护性，命名规范，可读性等各方面对代码规范性进行检查。重要的是，其规则可以自定义，可以屏蔽掉不适用于特定项目的规则，甚至可以自定义开发适用于各自项目的规则。&lt;/p&gt;  &lt;p&gt;安装StyleCop以后，在解决方案视图中右键点击项目，在弹出菜单选择“Run StyleCop”即可运行代码检查，结果默认将被输出至“Warnings”清单。也可以修改通过配置项，将其输出至“Errors”清单。开发人员可以方便地定位并修改编程规范问题。&lt;/p&gt;  &lt;p&gt;StyleCop可以与MSBuild进行集成。这样当开发人员点击“生成”项目时，将自动运行StyleCop检查，无须选择“Run StyleCop”菜单。而且，通过使用SVNStyleCop插件，可以方便地在SVN库上进行代码check in检查，对不符合代码规范的check in动作进行回滚。&lt;/p&gt;  &lt;p&gt;以下步骤介绍如何集成StyleCop至MSBuild，即让开发人员直接点击“生成”项目就可以进行代码检查：&lt;/p&gt;  &lt;p&gt;1，安装MSBuild集成文件。默认情况下，安装StyleCop不会选中安装“MSBuild files”，因此在安装时，进行到如下步骤时，确保选中“MSBuild files”进行安装。   &lt;br /&gt;&lt;strong&gt;&lt;img alt="Installing MSBuild Image" src="http://blogs.msdn.com/photos/sourceanalysis/images/8547677/original.aspx" width="499" height="386" /&gt;      &lt;br /&gt;&lt;/strong&gt;    &lt;br /&gt;2，在项目文件中增加Import配置节。要使得某个项目可以集成到MSBuild，需要使用诸如NotePad之类的编辑器打开项目文件（.csproj），添加如下红色字体部分，并保存项目文件：    &lt;br /&gt;&lt;em&gt;&amp;lt;Project&lt;/em&gt; DefaultTargets=&amp;quot;Build&amp;quot; xmlns=&amp;quot;http://schemas.microsoft.com/developer/msbuild/2003&amp;quot;&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;...Contents Removed...&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;lt;Import Project=&amp;quot;$(MSBuildBinPath)\Microsoft.CSharp.targets&amp;quot; /&amp;gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;lt;Import Project=&amp;quot;$(ProgramFiles)\MSBuild\Microsoft\StyleCop\v4.3\Microsoft.StyleCop.targets&amp;quot; /&amp;gt; &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;...Contents Removed...&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;lt;/Project&amp;gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;重新加载项目之后，该项目即可集成到MSBuild当中了。&lt;/p&gt;  &lt;p&gt;StyleCop还可以很方便地集成到团队开发和构建环境，如CI中。&lt;/p&gt;  &lt;p&gt;StyleCop已经开源：&lt;a href="http://stylecop.codeplex.com/"&gt;http://stylecop.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;SVNStyleCop请参见：&lt;a href="http://svnstylecop.codeplex.com/"&gt;http://svnstylecop.codeplex.com/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2285590.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2011/12/13/2285590.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2011/12/07/2279578.html</id><title type="text">asp.net mvc 3 unobtrusive client side validation not working in IE</title><summary type="text">http://stackoverflow.com/questions/5909260/jquery-1-6-form-validate-not-working-in-ie7-ie8 http://stackoverflow.com/questions/7008970/asp-net-mvc-3-unobtrusive-client-side-validation-not-working-in-i...</summary><published>2011-12-07T08:59:00Z</published><updated>2011-12-07T08:59:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2011/12/07/2279578.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2011/12/07/2279578.html"/><content type="html">&lt;p&gt;&lt;a href="http://stackoverflow.com/questions/5909260/jquery-1-6-form-validate-not-working-in-ie7-ie8"&gt;http://stackoverflow.com/questions/5909260/jquery-1-6-form-validate-not-working-in-ie7-ie8&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://stackoverflow.com/questions/7008970/asp-net-mvc-3-unobtrusive-client-side-validation-not-working-in-ie"&gt;http://stackoverflow.com/questions/7008970/asp-net-mvc-3-unobtrusive-client-side-validation-not-working-in-ie&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2279578.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2011/12/07/2279578.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2011/10/19/2217641.html</id><title type="text">[转] 微软轻量级 Web 开发平台 WebMatrix 发布</title><summary type="text">Microsoft WebMatrix 是一个全新的 Web 开发平台，今天开始正式发布第一个版本供公众使用。区别于现有的开发平台，WebMatrix 的特点是一站式和简化的开发过程，主要包含以下几大核心：IIS Developer Express: 这是一个轻量级的免费 Web 服务器，安装简便，支持目前所有的 Windows 版本，并且兼容完整版的 IIS 7.5 服务器。SQL Server Compact Edition: 一款基于文件的轻量级免费数据库，体积小巧，安装简便，可以集成到 ASP.NET 等众多微软开发场景中使用。使用SSCE平台的成本极低，并且可以很方便的迁移到 SQL</summary><published>2011-10-19T06:37:00Z</published><updated>2011-10-19T06:37:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2011/10/19/2217641.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2011/10/19/2217641.html"/><content type="html">&lt;span  style="font-family: Verdana; background-color: #e5ecf4; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Microsoft WebMatrix 是一个全新的 Web 开发平台，今天开始正式发布第一个版本供公众使用。区别于现有的开发平台，WebMatrix 的特点是一站式和简化的开发过程，主要包含以下几大核心：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;/p&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #003366; text-decoration: none; "&gt;IIS Developer Express&lt;/a&gt;: 这是一个轻量级的免费 Web 服务器，安装简便，支持目前所有的 Windows 版本，并且兼容完整版的 IIS 7.5 服务器。&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2010/06/30/new-embedded-database-support-with-asp-net.aspx" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #003366; text-decoration: none; "&gt;SQL Server Compact Edition&lt;/a&gt;: 一款基于文件的轻量级免费数据库，体积小巧，安装简便，可以集成到 ASP.NET 等众多微软开发场景中使用。使用SSCE平台的成本极低，并且可以很方便的迁移到 SQL Server。&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #003366; text-decoration: none; "&gt;ASP.NET &amp;#8220;Razor&amp;#8221;&lt;/a&gt;: 一种新的 ASP.NET 视图引擎，具有模板化的代码语法，便于在 HTML 中嵌入 VB 或 C#。其特点是语法简单，学习和编辑都非常容易。&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;img width="640" height="410" border="0" alt="" src="http://img.cnbeta.com/newsimg/100707/0636150508869473.png" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;与庞大的 Visual Studio 或 Visual Web Developer 相比，WebMatrix 体积只有 15MB而已，开发人员可以很快速的开始 ASP.NET 站点的开发和发布。 这个工具可以免费使用，提供了核心代码和数据库支持，集成了一个开元 Web 应用程序库，以及可以直接发布/部署站点的强大工具。如果你是 Web 开发人员，现在就可以通过 下载 Web PI 3&amp;nbsp;来试用这一产品。&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; " /&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;img alt="" src="http://cnbeta.com/articles/pic/down.gif" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;下载：&lt;/strong&gt;&lt;a href="http://www.microsoft.com/web/webmatrix/download" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; color: #003366; text-decoration: none; "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;WebMatrix&lt;/strong&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2217641.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2011/10/19/2217641.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2011/10/18/2216557.html</id><title type="text">LINQ ForEach</title><summary type="text">public static void ForEach&amp;lt;T&amp;gt;(this IEnumerable&amp;lt;T&amp;gt; items, Action&amp;lt;T&amp;gt; action) { foreach (var item in items) { action(item); } ...</summary><published>2011-10-18T07:43:00Z</published><updated>2011-10-18T07:43:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2011/10/18/2216557.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2011/10/18/2216557.html"/><content type="html">&lt;div &gt;   &lt;pre &gt;&lt;span &gt;public&lt;/span&gt; &lt;span &gt;static&lt;/span&gt; &lt;span &gt;void&lt;/span&gt; ForEach&amp;lt;T&amp;gt;(&lt;span &gt;this&lt;/span&gt; IEnumerable&amp;lt;T&amp;gt; items, Action&amp;lt;T&amp;gt; action)&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;foreach&lt;/span&gt; (var item &lt;span &gt;in&lt;/span&gt; items)&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;action(item);&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2216557.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2011/10/18/2216557.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2011/10/13/2209678.html</id><title type="text">Error: The version of SQL Server in use does not support datatype 'datetime2</title><summary type="text">I've built a entity framework model against a 2008 database. All works ok against the 2008 database. When I try to update the entity on a 2005 database I get this error.  I specifically did not use an...</summary><published>2011-10-13T01:39:00Z</published><updated>2011-10-13T01:39:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2011/10/13/2209678.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2011/10/13/2209678.html"/><content type="html">&lt;p&gt;I've built a entity framework model against a 2008 database. All works ok against the 2008 database. When I try to update the entity on a 2005 database I get this error.&lt;/p&gt;  &lt;pre&gt;The version of SQL Server in use does not support datatype 'datetime2&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;I specifically did not use any 2008 features when I built the database. I can't find any reference to datetime2 in the code. And, yes the column is defined as &amp;quot;datetime&amp;quot; in the database.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Answer:&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;A quick google points me to what looks like the &lt;a href="http://alexduggleby.com/2008/08/11/entity-data-model-generated-against-sql-2008-used-against-sql-2005/"&gt;solution&lt;/a&gt;.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Open your EDMX in a file editor (or “open with…” in Visual Studio and select XML Editor). At the top you will find the storage model and it has an attribute ProviderManifestToken. This has should have the value 2008. Change that to 2005, recompile and everything works.&lt;/p&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;&amp;lt;Schema Namespace=&amp;quot;Foobar.Store&amp;quot; Alias=&amp;quot;Self&amp;quot; Provider=&amp;quot;System.Data.SqlClient&amp;quot; ProviderManifestToken=&amp;quot;2005&amp;quot; &amp;gt;&lt;/code&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&#xD;
&#xD;
&lt;pre&gt;&lt;code&gt;From Link: &lt;a href="http://stackoverflow.com/questions/316422/using-sql-server-2008-and-sql-server-2005-and-date-time"&gt;http://stackoverflow.com/questions/316422/using-sql-server-2008-and-sql-server-2005-and-date-time&lt;/a&gt;&lt;/code&gt;&lt;/pre&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2209678.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2011/10/13/2209678.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126953.html</id><title type="text">ASP.NET MVC2 in Action 读书笔记 [12-4] MVC Ajax Helpers</title><summary type="text">Index.aspx: &amp;lt;script src=&amp;quot;../../Scripts/jquery-1.3.2.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script src=&amp;quot;../../Scripts/MicrosoftAjax.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;  &amp;lt;script src=&amp;quot;../../Scripts/Micro...</summary><published>2011-08-04T01:43:00Z</published><updated>2011-08-04T01:43:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126953.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126953.html"/><content type="html">&lt;p&gt;Index.aspx:&lt;/p&gt;  &lt;div &gt;   &lt;pre &gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;script&lt;/span&gt; &lt;span &gt;src&lt;/span&gt;&lt;span &gt;=&amp;quot;../../Scripts/jquery-1.3.2.js&amp;quot;&lt;/span&gt; &lt;span &gt;type&lt;/span&gt;&lt;span &gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span &gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;script&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;lt;script src=&lt;span &gt;&amp;quot;../../Scripts/MicrosoftAjax.js&amp;quot;&lt;/span&gt; type=&lt;span &gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;lt;script src=&lt;span &gt;&amp;quot;../../Scripts/MicrosoftMvcAjax.js&amp;quot;&lt;/span&gt; type=&lt;span &gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;span &gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;script&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;h3&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;Ajax.BeginForm&lt;span &gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;h3&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;h4&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;Comments&lt;span &gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;h4&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;    &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;ul&lt;/span&gt; &lt;span &gt;id&lt;/span&gt;&lt;span &gt;=&amp;quot;comments&amp;quot;&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;        &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;ul&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;&amp;lt;%&lt;/span&gt; &lt;span &gt;using&lt;/span&gt;(Ajax.BeginForm(&lt;span &gt;&amp;quot;AddComment&amp;quot;&lt;/span&gt;, &lt;span &gt;new&lt;/span&gt; AjaxOptions&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;HttpMethod = &lt;span &gt;&amp;quot;POST&amp;quot;&lt;/span&gt;, &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;UpdateTargetId = &lt;span &gt;&amp;quot;comments&amp;quot;&lt;/span&gt;,&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;InsertionMode = InsertionMode.InsertAfter                                                &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;})) { &lt;span &gt;%&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;&amp;lt;%&lt;/span&gt;= Html.TextArea(&lt;span &gt;&amp;quot;Comment&amp;quot;&lt;/span&gt;, &lt;span &gt;new&lt;/span&gt;{rows=5, cols=50}) &lt;span &gt;%&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;button&lt;/span&gt; &lt;span &gt;type&lt;/span&gt;&lt;span &gt;=&amp;quot;submit&amp;quot;&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;Add Comment&lt;span &gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;button&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;&amp;lt;%&lt;/span&gt; } &lt;span &gt;%&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;h3&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;Ajax.Link&lt;span &gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;h3&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;&amp;lt;%&lt;/span&gt;= Ajax.ActionLink(&lt;span &gt;&amp;quot;Show the privacy Policy&amp;quot;&lt;/span&gt;, &lt;span &gt;&amp;quot;PrivacyPolicy&amp;quot;&lt;/span&gt;, &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;new&lt;/span&gt; AjaxOptions{InsertionMode = InsertionMode.Replace, UpdateTargetId = &lt;span &gt;&amp;quot;privacy&amp;quot;&lt;/span&gt;}) &lt;span &gt;%&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;div&lt;/span&gt; &lt;span &gt;id&lt;/span&gt;&lt;span &gt;=&amp;quot;privacy&amp;quot;&lt;/span&gt;&lt;span &gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;div&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;AjaxHelpersController.cs:&lt;/p&gt;&#xD;
&#xD;
&lt;div &gt;&#xD;
  &lt;pre &gt;&lt;span &gt;public&lt;/span&gt; &lt;span &gt;class&lt;/span&gt; AjaxHelpersController : Controller&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;private&lt;/span&gt; IList&amp;lt;&lt;span &gt;string&lt;/span&gt;&amp;gt; _comments = &lt;span &gt;new&lt;/span&gt; List&amp;lt;&lt;span &gt;string&lt;/span&gt;&amp;gt;();&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;public&lt;/span&gt; ActionResult Index()&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;return&lt;/span&gt; View(_comments);&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;[HttpPost]&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;public&lt;/span&gt; ActionResult AddComment(&lt;span &gt;string&lt;/span&gt; comment)&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;_comments.Add(&lt;span &gt;&amp;quot;&amp;lt;li&amp;gt;&amp;quot;&lt;/span&gt; + comment + &lt;span &gt;&amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;return&lt;/span&gt; Content(&lt;span &gt;string&lt;/span&gt;.Join(&lt;span &gt;&amp;quot;\n&amp;quot;&lt;/span&gt;, _comments.ToArray()));&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;public&lt;/span&gt; ActionResult PrivacyPolicy()&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;const&lt;/span&gt; &lt;span &gt;string&lt;/span&gt; privacyText = &lt;span &gt;@&amp;quot;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;lt;h2&amp;gt;Our Commitment To Privacy&amp;lt;/h2&amp;gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;Your privacy is important to us. To better protect your privacy we provide this notice explaining our online &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;information practices and the choices you can make about the way your information is collected and used. &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;To make this notice easy to find, we make it available on our homepage and at every point where personally &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;identifiable information may be requested.&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;return&lt;/span&gt; Content(privacyText, &lt;span &gt;&amp;quot;text/html&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2126953.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126953.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126934.html</id><title type="text">ASP.NET MVC2 in Action 读书笔记 [12-2] Ajax with MVC</title><summary type="text">Index.aspx: &amp;lt;script src=&amp;quot;../../Scripts/jquery-1.3.2.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt; &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt; function getMessage() { $.get(&amp;quot;/SimpleAjax/GetMessage&amp;quot;, function(data) { $(&amp;quot;#re...</summary><published>2011-08-04T01:31:00Z</published><updated>2011-08-04T01:31:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126934.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126934.html"/><content type="html">&lt;p&gt;Index.aspx:&lt;/p&gt;  &lt;div &gt;   &lt;pre &gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;script&lt;/span&gt; &lt;span &gt;src&lt;/span&gt;&lt;span &gt;=&amp;quot;../../Scripts/jquery-1.3.2.js&amp;quot;&lt;/span&gt; &lt;span &gt;type&lt;/span&gt;&lt;span &gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span &gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;script&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&amp;lt;script type=&lt;span &gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;function&lt;/span&gt; getMessage() {&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;$.get(&lt;span &gt;&amp;quot;/SimpleAjax/GetMessage&amp;quot;&lt;/span&gt;, &lt;span &gt;function&lt;/span&gt;(data) {&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;$(&lt;span &gt;&amp;quot;#result&amp;quot;&lt;/span&gt;).html(data);&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;});&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;script&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;button&lt;/span&gt; &lt;span &gt;type&lt;/span&gt;&lt;span &gt;=&amp;quot;button&amp;quot;&lt;/span&gt; &lt;span &gt;onclick&lt;/span&gt;&lt;span &gt;=&amp;quot;getMessage();&amp;quot;&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;Get the Message!&lt;span &gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;button&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;div&lt;/span&gt; &lt;span &gt;id&lt;/span&gt;&lt;span &gt;=&amp;quot;result&amp;quot;&lt;/span&gt;&lt;span &gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;div&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;SimpleAjaxController.cs:&lt;/p&gt;&#xD;
&#xD;
&lt;div &gt;&#xD;
  &lt;pre &gt;&lt;span &gt;public&lt;/span&gt; &lt;span &gt;class&lt;/span&gt; SimpleAjaxController : Controller&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{   &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;public&lt;/span&gt; ActionResult Index()&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;return&lt;/span&gt; View();&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;public&lt;/span&gt; ActionResult GetMessage()&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;return&lt;/span&gt; Content(&lt;span &gt;&amp;quot;&amp;lt;h1&amp;gt;This is a custom message returned from an action.&amp;lt;/h1&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2126934.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126934.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126932.html</id><title type="text">ASP.NET MVC2 in Action 读书笔记 [12-1] Custom Ajax</title><summary type="text">&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt; function getXmlHttpRequest() { var xhr; //check for IE implementation(s) if (typeof ActiveXObject != &amp;#39;undefined&amp;#39;) { try { xhr = new ActiveXObject(&amp;quot;Msxml2.XMLHTTP&amp;quot;); } c...</summary><published>2011-08-04T01:28:00Z</published><updated>2011-08-04T01:28:00Z</updated><author><name>.Robot</name><uri>http://www.cnblogs.com/RobotTech/</uri></author><link rel="alternate" href="http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126932.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126932.html"/><content type="html">&lt;pre &gt;&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;script&lt;/span&gt; &lt;span &gt;type&lt;/span&gt;&lt;span &gt;=&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&#xD;
        &lt;span &gt;function&lt;/span&gt; getXmlHttpRequest() {&#xD;
            &lt;span &gt;var&lt;/span&gt; xhr;&#xD;
            &lt;span &gt;//check for IE implementation(s)&lt;/span&gt;&#xD;
            &lt;span &gt;if&lt;/span&gt; (&lt;span &gt;typeof&lt;/span&gt; ActiveXObject != &lt;span &gt;'undefined'&lt;/span&gt;) {&#xD;
                &lt;span &gt;try&lt;/span&gt; {&#xD;
                    xhr = &lt;span &gt;new&lt;/span&gt; ActiveXObject(&lt;span &gt;&amp;quot;Msxml2.XMLHTTP&amp;quot;&lt;/span&gt;);&#xD;
                } &lt;span &gt;catch&lt;/span&gt; (e) {&#xD;
                    xhr = &lt;span &gt;new&lt;/span&gt; ActiveXObject(&lt;span &gt;&amp;quot;Microsoft.XMLHTTP&amp;quot;&lt;/span&gt;);&#xD;
                }&#xD;
            } &lt;span &gt;else&lt;/span&gt; &lt;span &gt;if&lt;/span&gt; (XMLHttpRequest) {&#xD;
                &lt;span &gt;//this works for Firefox, Safari, Opera    &lt;/span&gt;&#xD;
                xhr = &lt;span &gt;new&lt;/span&gt; XMLHttpRequest();&#xD;
            } &lt;span &gt;else&lt;/span&gt; {&#xD;
                alert(&lt;span &gt;&amp;quot;Sorry, your browser doesn't support ajax&amp;quot;&lt;/span&gt;);&#xD;
            }&#xD;
&#xD;
            &lt;span &gt;return&lt;/span&gt; xhr;&#xD;
        }&#xD;
    &#xD;
        &lt;span &gt;function&lt;/span&gt; getMessage() {&#xD;
            &lt;span &gt;//get our xml http request object&lt;/span&gt;&#xD;
            &lt;span &gt;var&lt;/span&gt; xhr = getXmlHttpRequest();&#xD;
&#xD;
            &lt;span &gt;//prepare the request&lt;/span&gt;&#xD;
            xhr.open(&lt;span &gt;&amp;quot;GET&amp;quot;&lt;/span&gt;, &lt;span &gt;&amp;quot;get_message.html&amp;quot;&lt;/span&gt;, &lt;span &gt;true&lt;/span&gt;)&#xD;
            &#xD;
            &lt;span &gt;//setup the callback function&lt;/span&gt;&#xD;
            xhr.onreadystatechange = &lt;span &gt;function&lt;/span&gt;() {&#xD;
                &lt;span &gt;//readyState 4 means we're done&lt;/span&gt;&#xD;
                &lt;span &gt;if&lt;/span&gt;(xhr.readyState != 4) &lt;span &gt;return&lt;/span&gt;;&#xD;
                    &#xD;
                &lt;span &gt;//populate the page with the result&lt;/span&gt;&#xD;
                document.getElementById(&lt;span &gt;'result'&lt;/span&gt;).innerHTML = xhr.responseText;&#xD;
            };&#xD;
        &#xD;
            &lt;span &gt;//fire our request&lt;/span&gt;&#xD;
            xhr.send(&lt;span &gt;null&lt;/span&gt;);&#xD;
        }&#xD;
    &lt;span &gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;script&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&#xD;
&#xD;
&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;button&lt;/span&gt; &lt;span &gt;type&lt;/span&gt;&lt;span &gt;=&amp;quot;button&amp;quot;&lt;/span&gt; &lt;span &gt;onclick&lt;/span&gt;&lt;span &gt;=&amp;quot;getMessage()&amp;quot;&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;Get the Message&lt;span &gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;button&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&#xD;
&lt;span &gt;&amp;lt;&lt;/span&gt;&lt;span &gt;div&lt;/span&gt; &lt;span &gt;id&lt;/span&gt;&lt;span &gt;=&amp;quot;result&amp;quot;&lt;/span&gt;&lt;span &gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span &gt;div&lt;/span&gt;&lt;span &gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://www.cnblogs.com/RobotTech/aggbug/2126932.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/RobotTech/archive/2011/08/04/2126932.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
