<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Fred Xu的技术博客</title><subtitle type="text">哥编的不是代码，是寂寞！</subtitle><id>http://feed.cnblogs.com/blog/u/43880/rss</id><updated>2012-02-08T07:05:38Z</updated><author><name>Fred_Xu</name><uri>http://www.cnblogs.com/Fred_Xu/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Fred_Xu/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/43880/rss"/><entry><id>http://www.cnblogs.com/Fred_Xu/archive/2012/02/08/Configure-Log4net-to-write-to-multiple-files-by-level.html</id><title type="text">Log4net按照不同级别写入多个日志文件</title><summary type="text">在一个Web应用项目中，我使用了Fluent NHibernate作为数据访问组件，Log4net来做日志记录。实际编码中，主要使用了INFO和ERROR这两个等级来记录日志，如果按照以下Log4net配置：&amp;lt;root&amp;gt; &amp;lt;level value=&amp;quot;ALL&amp;quot;/&amp;gt; &amp;lt;appender-ref ref=&amp;quot;RollingFile&amp;quot;/&amp;gt; &amp;lt;appender-ref ref=&amp;quot;RollingFileTracer&amp;quot;/&amp;gt;&amp;lt;/root&amp;gt;log4net会把INFO和ERROR的日志记录到同一个</summary><published>2012-02-08T07:06:00Z</published><updated>2012-02-08T07:06:00Z</updated><author><name>Fred_Xu</name><uri>http://www.cnblogs.com/Fred_Xu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Fred_Xu/archive/2012/02/08/Configure-Log4net-to-write-to-multiple-files-by-level.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Fred_Xu/archive/2012/02/08/Configure-Log4net-to-write-to-multiple-files-by-level.html"/><content type="html">&lt;p&gt;在一个Web应用项目中，我使用了Fluent NHibernate作为数据访问组件，Log4net来做日志记录。实际编码中，主要使用了INFO和ERROR这两个等级来记录日志，如果按照以下Log4net配置：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;root&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;level &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="ALL"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;appender-ref &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;ref&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="RollingFile"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;appender-ref &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;ref&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="RollingFileTracer"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;root&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;br /&gt;log4net会把INFO和ERROR的日志记录到同一个日志文件里，Fluent NHibernate的INFO日志会大量存在于该日志文件中，这样一来对日后分析错误日志带来非常之不便，所以就想能不能单独把ERROR级的错误日志记录到一个特定的日志文件里。&lt;/p&gt;&#xD;
&lt;p&gt;于是开始尝试各种配置来实现这个需要，&amp;lt;root&amp;gt;标签不支持多个&amp;lt;level&amp;gt;，也就没法通过在&amp;lt;root&amp;gt;中配置多个不同级别的日志输入，通过查阅Log4net文档，找到了&amp;lt;Filter&amp;gt;这个标记，配置如下：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;configSections&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;section &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="log4net"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="log4net.Config.Log4NetConfigurationSectionHandler,log4net"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;configSections&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;log4net&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #008000;"&gt;http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html&lt;/span&gt;&lt;span style="color: #008000;"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;appender &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="ConsoleAppender"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="log4net.Appender.ConsoleAppender"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;layout &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="log4net.Layout.PatternLayout"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;conversionPattern &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="[%p %t] [%date{yyyy-MM-dd HH:mm:ss,fff}] %-5l - %m%n"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;layout&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;appender&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;appender &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="RollingFile"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="log4net.Appender.RollingFileAppender"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;file &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="App_Data/log.log"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;appendToFile &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="true"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;maximumFileSize &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="5000KB"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;maxSizeRollBackups &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="500"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;CountDirection &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="1"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;RollingStyle &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Size"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;layout &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="log4net.Layout.PatternLayout"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;conversionPattern &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="[%p %t] [%date{yyyy-MM-dd HH:mm:ss,fff}] %-5logger - %m%n"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;layout&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;appender&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;appender &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="RollingFileTracer"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="log4net.Appender.RollingFileAppender"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;file &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="App_Data/Trace.log"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;appendToFile &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="true"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;maximumFileSize &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="5000KB"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;maxSizeRollBackups &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="500"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;CountDirection &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="1"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;RollingStyle &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Size"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;layout &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="log4net.Layout.PatternLayout"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;conversionPattern &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="[%p] %m%n"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;layout&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;filter &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="log4net.Filter.LevelRangeFilter"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;levelMin &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="ERROR"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;levelMax &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="FATAL"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;filter&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;appender&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;root&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;level &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="ALL"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;appender-ref &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;ref&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="RollingFile"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;appender-ref &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;ref&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="RollingFileTracer"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;root&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;log4net&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;我们可以看到&amp;ldquo;RollingFileTracer&amp;rdquo;中我们通过Filter过滤，只记录范围为ERROR到FATAL，然后在&amp;lt;root&amp;gt;增加该appender，level设置为&amp;ldquo;ALL&amp;rdquo;记录所有级别的日志。好了，配置完成，程序实现了记录不同等级的错误信息到多个日志文件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;参考：&lt;a href="http://stackoverflow.com/questions/1372435/configure-log4net-to-write-to-multiple-files"&gt;http://stackoverflow.com/questions/1372435/configure-log4net-to-write-to-multiple-files&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Fred_Xu/aggbug/2342739.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Fred_Xu/archive/2012/02/08/Configure-Log4net-to-write-to-multiple-files-by-level.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Fred_Xu/archive/2012/02/02/dreamweaver-wordpress-code-intelligence.html</id><title type="text">Dreamweaver CS5 中启用 WordPress 代码提示功能</title><summary type="text">代码提示功能的好处 使用 Dreamweaver 这样的可视化的 IDE 工具进行编程的最大的一个好处是它的代码提示功能，只要输入几个字符，IDE 工具就会智能的给出一系列可选的函数或者变量让你输入。 代码提示功能的好处是非常明显的，比如你对某个函数记不清楚，就可以通过代码提示功能快速输入，而不用去搜索和查资料，即使非常清楚，也可以通过代码提示功能快速输入而无需输入每个字符，这样的对编程效率提高是非常明显的。Dreamweaver CS5 支持 WordPress 代码提示 我们知道 Dreamweaver 代码提示功能支持 HTML，PHP，JavaScript 这些动态语言，而最新发...</summary><published>2012-02-02T03:40:00Z</published><updated>2012-02-02T03:40:00Z</updated><author><name>Fred_Xu</name><uri>http://www.cnblogs.com/Fred_Xu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Fred_Xu/archive/2012/02/02/dreamweaver-wordpress-code-intelligence.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Fred_Xu/archive/2012/02/02/dreamweaver-wordpress-code-intelligence.html"/><content type="html">&lt;p&gt;&lt;strong&gt;代码提示功能的好处&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;使用 Dreamweaver 这样的可视化的 IDE 工具进行编程的最大的一个好处是它的代码提示功能，只要输入几个字符，IDE 工具就会智能的给出一系列可选的函数或者变量让你输入。&lt;/p&gt;&#xD;
&lt;p&gt;代码提示功能的好处是非常明显的，比如你对某个函数记不清楚，就可以通过代码提示功能快速输入，而不用去搜索和查资料，即使非常清楚，也可以通过代码提示功能快速输入而无需输入每个字符，这样的对编程效率提高是非常明显的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;Dreamweaver CS5 支持 WordPress 代码提示&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我们知道 Dreamweaver 代码提示功能支持 HTML，PHP，JavaScript 这些动态语言，而最新发布的 Dreamweaver CS5 则更进一步，支持 WordPress，Drupal，Joomla 这些开源程序的私有函数的代码提示。&lt;/p&gt;&#xD;
&lt;p&gt;这样使用 Dreamweaver CS5 来开发 WordPress 插件和主题，只要输入 WordPress 内置函数的前几个字符，就会显示整个函数，再也不用辛苦记住函数名称了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;如何在 Dreamweaver CS5 中启用 WordPress 代码提示功能&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;下面就讲解下如何在 Dreamweaver CS5 中启用 WordPress 代码提示功能：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;将本地的测试站点添加到 Dreamweaver CS5&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;首先要在本地安装好 WordPress 测试网站，如果是 Windows 系统，可以查看这篇教程：如何在 Windows 系统上安装 WordPress 本地测试，并保证网站已经能在本地正常浏览。&lt;/p&gt;&#xD;
&lt;p&gt;点击 Dreamweaver CS5 菜单中的&amp;rdquo;Site&amp;ndash;&amp;gt;New Site&amp;rdquo;，如下图建立新站点：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic.fairyfish.com/2010/08/dreamweaver-wordpress-code-hinting-1.jpg" alt="Dreamweaver CS5 建立新站点" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在同一对话框中切换到&amp;rdquo;Servers&amp;rdquo;界面，点击&amp;rdquo;+&amp;rdquo;号添加测试服务器。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic.fairyfish.com/2010/08/dreamweaver-wordpress-code-hinting-2.jpg" alt="Dreamweaver CS5 添加测试服务器" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;上面我们说到 Dreamweaver CS5 中启用 WordPress 代码提示功能需要一个测试服务器，我们已经预先在电脑上安装例如 XAMPP 之类的服务器，并把一些信息输入上图。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic.fairyfish.com/2010/08/dreamweaver-wordpress-code-hinting-3.jpg" alt="Dreamweaver CS5 测试服务器基本设置" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在同一对话框中切换到&amp;rdquo;Advanced&amp;rdquo;界面，&amp;rdquo;Server Model&amp;rdquo;选择&amp;rdquo;PHP MySQL&amp;rdquo;，保存。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic.fairyfish.com/2010/08/dreamweaver-wordpress-code-hinting-4.jpg" alt="Dreamweaver CS5 测试服务器高级设置" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;返回到&amp;rdquo;Servers&amp;rdquo;设置界面，选中&amp;rdquo;Testing&amp;rdquo;，保存，退出此对话框，完成站点设置了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic.fairyfish.com/2010/08/dreamweaver-wordpress-code-hinting-5.jpg" alt="把服务器设置为测试" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;开启 Dreamweaver CS5 中 WordPress 代码提示功能&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;点击 Dreamweaver 菜单中的 &amp;rdquo;Site&amp;ndash;&amp;gt;Site-Specific Code Hints&amp;rdquo;，以便让站点与 WordPress关联，如上图，一般 Dreamweaver 会自动选中 WordPress，如果没有，请手工选择一下，保存退出些对话框。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic.fairyfish.com/2010/08/dreamweaver-wordpress-code-hinting-6.jpg" alt="开启 Dreamweaver CS5 中 WordPress 代码提示功能" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;好了，一切设置已完成，下面是见证奇迹的时刻，打开一个 WordPress主题中的文件，例如 index.php，如下图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic.fairyfish.com/2010/08/dreamweaver-wordpress-code-hinting-7.jpg" alt="Dreamweaver CS5 的 WordPress 代码提示功能" width="600" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;输入WordPress 某个函数的前几个字符，例如 &amp;rdquo;the_&amp;rdquo;，按 Ctrl+H，就会弹出 WordPress 里以&amp;rdquo;the_&amp;rdquo;开头的所有函数供你选择，是不是很方便呢？&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Fred_Xu/aggbug/2335543.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Fred_Xu/archive/2012/02/02/dreamweaver-wordpress-code-intelligence.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Fred_Xu/archive/2012/02/02/2335245.html</id><title type="text">This theme is released under creative commons licence, all links in the footer should remain intact解决方法</title><summary type="text">使用wordpress主题时对模版修改称自己喜欢的样式，有时在对footer.php中的内容修改后会遇到 :This theme is released under creative commons licence, all links in the footer should remain intact，然后网站和后台都进不去的情况。解决办法是去空间把footer.php改回原来的样子，或者重新上传覆盖原有主题。然后在后台或者空间找到header.php，删除下面的代码：&amp;lt;?php eval(str_rot13(‘shapgvba purpx_s_…………vagnpg\’);qvr;}</summary><published>2012-02-01T16:27:00Z</published><updated>2012-02-01T16:27:00Z</updated><author><name>Fred_Xu</name><uri>http://www.cnblogs.com/Fred_Xu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Fred_Xu/archive/2012/02/02/2335245.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Fred_Xu/archive/2012/02/02/2335245.html"/><content type="html">&lt;p&gt;使用wordpress主题时对模版修改称自己喜欢的样式，有时在对footer.php中的内容修改后会遇到 :This theme is released under creative commons licence, all links in the footer should remain intact，然后网站和后台都进不去的情况。&lt;/p&gt;&#xD;
&lt;p&gt;解决办法是去空间把footer.php改回原来的样子，或者重新上传覆盖原有主题。然后在后台或者空间找到header.php，删除下面的代码：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&amp;lt;?php &lt;span style="color: #0000ff;"&gt;eval&lt;/span&gt;(&lt;span style="color: #008080;"&gt;str_rot13&lt;/span&gt;(&amp;lsquo;shapgvba purpx_s_&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;vagnpg\&amp;rsquo;);qvr;}}purpx_s_sbbgre();&amp;rsquo;)); ?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?php &lt;span style="color: #0000ff;"&gt;eval&lt;/span&gt;(&lt;span style="color: #008080;"&gt;str_rot13&lt;/span&gt;(&amp;lsquo;shapgvba &amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;purpx_shapgvbaf();&amp;rsquo;)); wp_head(); ?&amp;gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;然后在后台或者空间找到functions.php，删除下面的代码：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;eval&lt;/span&gt;(&lt;span style="color: #008080;"&gt;str_rot13&lt;/span&gt;(&amp;lsquo;shapgvba purpx_sbbgre(){&lt;span style="color: #800080;"&gt;$y&lt;/span&gt;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip; vagnpg\&amp;rsquo;;qvr;}}purpx_sbbgre();&amp;rsquo;));&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;eval&lt;/span&gt;(&lt;span style="color: #008080;"&gt;str_rot13&lt;/span&gt;(&amp;lsquo;shapgvba purpx_urnqre&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;erznva vagnpg\&amp;rsquo;);qvr;}}&amp;rsquo;));&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;现在就可以修改footer.php了。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Fred_Xu/aggbug/2335245.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Fred_Xu/archive/2012/02/02/2335245.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Fred_Xu/archive/2011/09/12/httprequest-eurl-axd-error.html</id><title type="text">ASP.NET生成eurl.axd Http异常错误处理方法【转】</title><summary type="text">在IIS6中同时启用了ASP.NET 2.0 和 ASP.NET 4.0 后，网站程序可能会出现如下错误：“ System.Web.HttpException: Path ‘//eurl.axd/‘ was not found. ”错误发生的原因是当ASP.NET检测到Web站点配置为使用ASP.NET 4.0，本地ASP.NET 4.0 的组件会传递一个不能扩展的 URL到ASP.NET的管理程序作进一步处理。但是，如果一个低于ASP.NET 4.0 的网站配置为使用ASP.NET 2.0，处理这样不能扩展的 URL 时，URL的修改结果中会包含字符串“eurl.axd”，修改后的URL会被</summary><published>2011-09-12T04:53:00Z</published><updated>2011-09-12T04:53:00Z</updated><author><name>Fred_Xu</name><uri>http://www.cnblogs.com/Fred_Xu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/12/httprequest-eurl-axd-error.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/12/httprequest-eurl-axd-error.html"/><content type="html">&lt;p&gt;&lt;span  style="color: #333333; font-family: Verdana, Arial, Tahoma; line-height: 25px;"&gt;在IIS6中同时启用了ASP.NET 2.0 和 ASP.NET 4.0 后，网站程序可能会出现如下错误：&amp;ldquo; System.Web.HttpException: Path &amp;lsquo;//eurl.axd/&amp;lsquo; was not found. &amp;rdquo;&lt;br style="padding: 0px; margin: 0px;" /&gt;&lt;br style="padding: 0px; margin: 0px;" /&gt;错误发生的原因是当ASP.NET检测到Web站点配置为使用ASP.NET 4.0，本地ASP.NET 4.0 的组件会传递一个不能扩展的 URL到ASP.NET的管理程序作进一步处理。但是，如果一个低于ASP.NET 4.0 的网站配置为使用ASP.NET 2.0，处理这样不能扩展的 URL 时，URL的修改结果中会包含字符串&amp;ldquo;eurl.axd&amp;rdquo;，修改后的URL会被发送到 ASP.NET 2.0应用程序。&lt;br style="padding: 0px; margin: 0px;" /&gt;&lt;br style="padding: 0px; margin: 0px;" /&gt;ASP.NET 2.0中是不能识别&amp;ldquo;eurl.axd&amp;rdquo;的。因此ASP.NET 2.0会尝试查找一个文件名为&amp;ldquo;eurl.axd&amp;rdquo;的文件并执行它。因为没有这样的文件，所以会请求失败，Http异常并抛出带有字符串&amp;ldquo;eurl.axd&amp;rdquo;的错误。&lt;br style="padding: 0px; margin: 0px;" /&gt;&lt;br style="padding: 0px; margin: 0px;" /&gt;&lt;span style="font-weight: bold; padding: 0px; margin: 0px;"&gt;有三种方法可以解决这样的问题：&lt;/span&gt;&lt;br style="padding: 0px; margin: 0px;" /&gt;&lt;br style="padding: 0px; margin: 0px;" /&gt;1.如果网站程序不需要ASP.NET 4&amp;lrm;.0 的支持，那么可以直接配置网站使用ASP.NET 2.0。&lt;br style="padding: 0px; margin: 0px;" /&gt;&lt;br style="padding: 0px; margin: 0px;" /&gt;2.如果网站程序需要ASP.NET 4&amp;lrm;.0的支持，就需要将该网站下使用ASP.NET 2.0的虚拟目录移动到其他网站。&lt;br style="padding: 0px; margin: 0px;" /&gt;&lt;br style="padding: 0px; margin: 0px;" /&gt;3.如果上面两种方法都不适用于你的实际情况，那么就只能用这种方法了：&lt;br style="padding: 0px; margin: 0px;" /&gt;&lt;br style="padding: 0px; margin: 0px;" /&gt;打开注册表找到&amp;ldquo;HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\ASP.NET\\4.0.30319.0&amp;rdquo;，添加键值名为&amp;ldquo;EnableExtensionlessUrls&amp;rdquo; 类型为&amp;ldquo;DWORD&amp;rdquo;的键值，并设置值为&amp;ldquo;0&amp;rdquo;。然后在cmd中运行&amp;ldquo;IISRESET&amp;rdquo;，重启IIS以读取注册表修改后的内容。注：此项修改就是关闭ASP.NET 4&amp;lrm;.0对无扩展URL的处理，若将此项键值设为&amp;ldquo;1&amp;rdquo;则开启。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Fred_Xu/aggbug/2174007.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/12/httprequest-eurl-axd-error.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Fred_Xu/archive/2011/09/11/asp-net-mvc-using-controller-updatemodel-when-using-a-viewmodel.html</id><title type="text">使用Controller.UpdateModel方法来更新ViewModel</title><summary type="text">原文（En）：http://www.joe-stevens.com/2010/02/17/asp-net-mvc-using-controller-updatemodel-when-using-a-viewmodel/在MVC中，更新Model的时候，我们通常使用Controller.UpdateModel方法。我最近在项目中使用了自定义ViewModel，在使用UpdateModel方法的时候无法映射到Post的数据到Model对象里。这个解决方案是一个简单的，但并不像它应该的IntelliSense不拾取方法的重载泛型类型推断时。当不使用ViewModel的时候，我可以像这样使用Contr</summary><published>2011-09-11T05:10:00Z</published><updated>2011-09-11T05:10:00Z</updated><author><name>Fred_Xu</name><uri>http://www.cnblogs.com/Fred_Xu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/11/asp-net-mvc-using-controller-updatemodel-when-using-a-viewmodel.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/11/asp-net-mvc-using-controller-updatemodel-when-using-a-viewmodel.html"/><content type="html">&lt;p&gt;原文（En）：&lt;a href="http://www.joe-stevens.com/2010/02/17/asp-net-mvc-using-controller-updatemodel-when-using-a-viewmodel/"&gt;http://www.joe-stevens.com/2010/02/17/asp-net-mvc-using-controller-updatemodel-when-using-a-viewmodel/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在MVC中，更新Model的时候，我们通常使用&lt;a href="http://msdn.microsoft.com/en-us/library/dd470185.aspx" target="_blank"&gt;Controller.UpdateModel&lt;/a&gt;方法。我最近在项目中使用了自定义ViewModel，在使用UpdateModel方法的时候无法映射到Post的数据到Model对象里。这个解决方案是一个简单的，但并不像它应该的IntelliSense不拾取方法的重载泛型类型推断时。&lt;/p&gt;&#xD;
&lt;p&gt;当不使用ViewModel的时候，我可以像这样使用Controller方法：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;public ActionResult Edit(int id)&#xD;
{&#xD;
    Student student = context.Student.FirstOrDefault(s =&amp;gt; s.ID.Equals(id));&#xD;
 &#xD;
    return View(student);&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;前端View中使用强类型视图：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&amp;lt;div&amp;gt;&#xD;
    &amp;lt;%= Html.LabelFor(model =&amp;gt; model.Forename) %&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&#xD;
&amp;lt;div&amp;gt;&#xD;
    &amp;lt;%= Html.TextBoxFor(model =&amp;gt; model.Forename)%&amp;gt;&#xD;
    &amp;lt;%= Html.ValidationMessageFor(model =&amp;gt; model.Forename)%&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&#xD;
 &#xD;
&amp;lt;div&amp;gt;&#xD;
    &amp;lt;%= Html.LabelFor(model =&amp;gt; model.Surname)%&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&#xD;
&amp;lt;div&amp;gt;&#xD;
    &amp;lt;%= Html.TextBoxFor(model =&amp;gt; model.Surname)%&amp;gt;&#xD;
    &amp;lt;%= Html.ValidationMessageFor(model =&amp;gt; model.Surname)%&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;Controller中可以用这样的方法来保存Student数据：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;[HttpPost]&#xD;
public ActionResult Edit(int id, FormCollection formValues)&#xD;
{&#xD;
    try&#xD;
    {&#xD;
        Student student = context.Student.FirstOrDefault(s =&amp;gt; s.ID.Equals(id));&#xD;
        UpdateModel(student);&#xD;
        context.SaveChanges();&#xD;
 &#xD;
        return RedirectToAction("Details", new { id = student.ID });&#xD;
    }&#xD;
    catch&#xD;
    {&#xD;
        throw;&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;UpdateModel会遍历formValues集合并且映射post过来的数据到student model对象中。如果我去检查这个集合的Keys，我可以看到formValues匹配了student model的属性，使得映射成功。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/40302/2011091115552941.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;现在来看看如果使用ViewModel会发生什么，这是一个很好的MVC练习。&lt;/p&gt;&#xD;
&lt;p&gt;下面是一个Student ViewModel的代码示例：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;public class StudentModel&#xD;
{&#xD;
    public Student Student { get; set; }&#xD;
    public SelectList Titles { get; set; } &#xD;
 &#xD;
    public StudentModel()&#xD;
    { &#xD;
 &#xD;
    } &#xD;
 &#xD;
    public StudentModel(Student student, IEnumerable&amp;lt;Title&amp;gt; titles)&#xD;
    {&#xD;
        Student = student;&#xD;
        Titles = new SelectList(titles, "ID", "Name", student.TitleID);&#xD;
    }&#xD;
} &lt;span face="verdana, Arial, Helvetica, sans-serif" style="font-family: verdana, Arial, Helvetica, sans-serif;"&gt;&lt;span  style="font-size: 14px; line-height: 21px; white-space: normal;"&gt;&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;接下来是如何使用ViewModel来编辑的方法：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;public ActionResult Edit(int id)&#xD;
{&#xD;
    Student student = context.Student.FirstOrDefault(s =&amp;gt; s.ID.Equals(id));&#xD;
 &#xD;
    return View(new StudentModel(student, context.Title));&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;前端View视图页代码：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&amp;lt;div&amp;gt;&#xD;
    &amp;lt;%= Html.LabelFor(model =&amp;gt; model.Student.Title) %&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&#xD;
&amp;lt;div&amp;gt;&#xD;
    &amp;lt;%= Html.DropDownListFor(model =&amp;gt; model.Student.TitleID, Model.Titles)%&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&#xD;
 &#xD;
&amp;lt;div&amp;gt;&#xD;
    &amp;lt;%= Html.LabelFor(model =&amp;gt; model.Student.Forename) %&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&#xD;
&amp;lt;div&amp;gt;&#xD;
    &amp;lt;%= Html.TextBoxFor(model =&amp;gt; model.Student.Forename)%&amp;gt;&#xD;
    &amp;lt;%= Html.ValidationMessageFor(model =&amp;gt; model.Student.Forename)%&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&lt;span face="verdana, Arial, Helvetica, sans-serif" style="font-family: verdana, Arial, Helvetica, sans-serif;"&gt;&lt;span  style="font-size: 14px; line-height: 21px; white-space: normal;"&gt;&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;我们设断点来看下这次Post到Edit方法的formValues集合，Keys如图所示：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/40302/2011091116043156.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;可以看到Keys中包含了Student这个Model对象，这是因为ViewModel使用了这个Student Model，但增加了&amp;ldquo;Student&amp;rdquo;作为前缀，和前面直接使用Model不一样。如果按照前面的UpdateModel方法，程序会获取不到post过来的值，也会报错。在这里，UpdateModel有重载方法，第二参数是Prefix，也就是"Student"前缀。&lt;/p&gt;&#xD;
&lt;p&gt;我们这下写这个UpdateModel方法：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;UpdateModel&amp;lt;Student&amp;gt;(student, "Student");&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;你可以看到使用了&amp;ldquo;Student&amp;rdquo;作为前缀，映射正确。&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;[HttpPost]&#xD;
public ActionResult Edit(int id, FormCollection formValues)&#xD;
{&#xD;
    try&#xD;
    {&#xD;
        Student student = context.Student.FirstOrDefault(s =&amp;gt; s.ID.Equals(id));&#xD;
        UpdateModel(student, "Student");&#xD;
        context.SaveChanges();&#xD;
 &#xD;
        return RedirectToAction("Details", new { id = student.ID });&#xD;
    }&#xD;
    catch&#xD;
    {&#xD;
        throw;&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;程序运行成功！&lt;/p&gt;&#xD;
&lt;p&gt;希望该文章会给大家带来帮助！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Fred_Xu/aggbug/2173614.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/11/asp-net-mvc-using-controller-updatemodel-when-using-a-viewmodel.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Fred_Xu/archive/2011/09/08/ie-a-hover-background-bug.html</id><title type="text">IE浏览器中a:hover设置background失效的解决方法</title><summary type="text">hover伪类在IE中有bug以前貌似在网上看到过，但是实际应用中没碰到过，今天正好有个页面需要做一个导航栏，结果a:hover设置background后在IE下是无法显示背景的。html：&amp;lt;ul id=&amp;quot;nav&amp;quot;&amp;gt; &amp;lt;LI&amp;gt; &amp;lt;A href=&amp;quot;http://preprod-world-2007/knowledge/udc2011/en/Pages/home.aspx&amp;quot;&amp;gt; Home &amp;lt;/A&amp;gt; &amp;lt;/LI&amp;gt; &amp;lt;LI&amp;gt; &amp;lt;A href=&amp;quot;http://preprod-wor</summary><published>2011-09-08T09:28:00Z</published><updated>2011-09-08T09:28:00Z</updated><author><name>Fred_Xu</name><uri>http://www.cnblogs.com/Fred_Xu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/08/ie-a-hover-background-bug.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/08/ie-a-hover-background-bug.html"/><content type="html">&lt;p&gt;hover伪类在IE中有bug以前貌似在网上看到过，但是实际应用中没碰到过，今天正好有个页面需要做一个导航栏，结果a:hover设置background后在IE下是无法显示背景的。&lt;/p&gt;&#xD;
&lt;p&gt;html：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&amp;lt;ul id="nav"&amp;gt;&#xD;
    &amp;lt;LI&amp;gt;&#xD;
        &amp;lt;A href="http://preprod-world-2007/knowledge/udc2011/en/Pages/home.aspx"&amp;gt;&#xD;
            Home&#xD;
        &amp;lt;/A&amp;gt;&#xD;
    &amp;lt;/LI&amp;gt;&#xD;
    &amp;lt;LI&amp;gt;&#xD;
        &amp;lt;A href="http://preprod-world-2007/knowledge/udc2011/en/Pages/home.aspx#"&amp;gt;&#xD;
            Submissions&#xD;
        &amp;lt;/A&amp;gt;&#xD;
        &amp;lt;UL&amp;gt;&#xD;
                    &amp;lt;LI&amp;gt;&#xD;
                        &amp;lt;A href="http://preprod-world-2007/knowledge/udc2011/en/Pages/submit.aspx"&amp;gt;&#xD;
                            &amp;lt;span&amp;gt;&#xD;
                                Selection process&#xD;
                            &amp;lt;/span&amp;gt;&#xD;
                        &amp;lt;/A&amp;gt;&#xD;
                    &amp;lt;/LI&amp;gt;&#xD;
        &amp;lt;/UL&amp;gt;&#xD;
        &amp;lt;/LI&amp;gt;&#xD;
&amp;lt;/ul&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;chrome下显示效果：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;css：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;#nav, #nav ul{&#xD;
margin:0;&#xD;
padding:0;&#xD;
list-style-type:none;&#xD;
list-style-position:outside;&#xD;
position:relative;&#xD;
line-height:1.5em;&#xD;
background:#b5bd00;&#xD;
}&#xD;
&#xD;
#nav a{&#xD;
display:block;&#xD;
padding:0px 5px;&#xD;
COLOR: #484848; FONT-SIZE: 10px; FONT-WEIGHT: bold;&#xD;
text-decoration:none;&#xD;
}&#xD;
&#xD;
#nav li{&#xD;
float:left;&#xD;
position:relative;&#xD;
}&#xD;
&#xD;
#nav ul {&#xD;
position:absolute;&#xD;
display:none;&#xD;
width:auto;&#xD;
top:1.5em;&#xD;
z-index:1000;&#xD;
}&#xD;
&#xD;
#nav li ul a{&#xD;
width:12em;&#xD;
height:auto;&#xD;
margin:2px;&#xD;
float:left;&#xD;
display:block;&#xD;
}&#xD;
&#xD;
#nav li ul li a:hover{&#xD;
	background:#fff;&#xD;
	margin:2px;	&#xD;
	display:block;&#xD;
}&#xD;
&#xD;
/*#nav li ul li a:hover span{background:#fff; display:block; width:12em;}&#xD;
*/&#xD;
#nav ul ul{&#xD;
top:auto;&#xD;
}&#xD;
&#xD;
#nav li ul ul {&#xD;
left:12em;&#xD;
margin:0px 0 0 10px;&#xD;
}&#xD;
&#xD;
#nav li:hover ul ul, #nav li:hover ul ul ul, #nav li:hover ul ul ul ul{&#xD;
	&#xD;
display:none;&#xD;
}&#xD;
#nav li:hover ul, #nav li li:hover ul, #nav li li li:hover ul, #nav li li li li:hover ul{&#xD;
display:block;&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;尽管你怎么样子设置a tag的css都是不管用的，参考了&lt;a href="http://www.planabc.net/2007/02/15/ie_hover_bug/"&gt;http://www.planabc.net/2007/02/15/ie_hover_bug/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在a tag中增加一个span tag，同时在css中增加&lt;/p&gt;&#xD;
&lt;p&gt;html：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&amp;lt;LI&amp;gt;&amp;lt;A href="http://preprod-world-2007/knowledge/udc2011/en/Pages/home.aspx#"&amp;gt;&amp;lt;span&amp;gt;Make &#xD;
                                                    of your event&amp;lt;/span&amp;gt;&amp;lt;/A&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;css：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;#nav li ul li a:hover span{background:#fff; display:block; width:16em;}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;ok，that's done!&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Fred_Xu/aggbug/2171622.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/08/ie-a-hover-background-bug.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Fred_Xu/archive/2011/09/05/jquery-scroll-content-singleline-multiline.html</id><title type="text">基于jQuery的上下无缝滚动应用(单行或多行)【转】</title><summary type="text">基于jQuery的上下无缝滚动应用,可应用于多行或者单行.详解请参考注释.查看演示:点此查看DEMO核心jQuery代码:$(function(){	var _wrap=$(&amp;#39;ul.line&amp;#39;);//定义滚动区域	var _interval=2000;//定义滚动间隙时间	var _moving;//需要清除的动画	_wrap.hover(function(){ clearInterval(_moving);//当鼠标在滚动区域中时,停止滚动	},function(){ _moving=setInterval(function(){ var _field=_wrap.find(</summary><published>2011-09-05T13:59:00Z</published><updated>2011-09-05T13:59:00Z</updated><author><name>Fred_Xu</name><uri>http://www.cnblogs.com/Fred_Xu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/05/jquery-scroll-content-singleline-multiline.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/05/jquery-scroll-content-singleline-multiline.html"/><content type="html">&lt;p&gt;&lt;span  style="font-family: Georgia, 'Bitstream Charter', serif, 宋体; line-height: 26px;"&gt;基于jQuery的上下无缝滚动应用,可应用于多行或者单行.详解请参考注释.&lt;br style="margin-bottom: 7px;" /&gt;&lt;strong style="margin-right: 3px;"&gt;查看演示:&amp;nbsp;&lt;/strong&gt;&lt;span &gt;&lt;a target="_blank" href="http://mrthink.net/demo/thinkjsjq100808.htm" style="color: #ffffff; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: #004477; text-decoration: underline; padding-top: 2px; padding-right: 5px; padding-bottom: 2px; padding-left: 5px; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 10px; background-position: initial initial; background-repeat: initial initial;"&gt;点此查看DEMO&lt;/a&gt;&lt;/span&gt;&lt;br style="margin-bottom: 7px;" /&gt;&lt;strong style="margin-right: 3px;"&gt;核心jQuery代码:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;$(function(){&#xD;
	var _wrap=$('ul.line');//定义滚动区域&#xD;
	var _interval=2000;//定义滚动间隙时间&#xD;
	var _moving;//需要清除的动画&#xD;
	_wrap.hover(function(){&#xD;
		clearInterval(_moving);//当鼠标在滚动区域中时,停止滚动&#xD;
	},function(){&#xD;
		_moving=setInterval(function(){&#xD;
			var _field=_wrap.find('li:first');//此变量不可放置于函数起始处,li:first取值是变化的&#xD;
			var _h=_field.height();//取得每次滚动高度(多行滚动情况下,此变量不可置于开始处,否则会有间隔时长延时)&#xD;
			_field.animate({marginTop:-_h+'px'},600,function(){//通过取负margin值,隐藏第一行&#xD;
				_field.css('marginTop',0).appendTo(_wrap);//隐藏后,将该行的margin值置零,并插入到最后,实现无缝滚动&#xD;
			})&#xD;
		},_interval)//滚动间隔时间取决于_interval&#xD;
	}).trigger('mouseleave');//函数载入时,模拟执行mouseleave,即自动滚动&#xD;
});&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;引用：&lt;a href="http://mrthink.net/js-jq-autoscroll-updown/"&gt;http://mrthink.net/js-jq-autoscroll-updown/&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="font-family: Georgia, 'Bitstream Charter', serif, 宋体; line-height: 26px;"&gt;&lt;strong style="margin-right: 3px;"&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Fred_Xu/aggbug/2168042.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/05/jquery-scroll-content-singleline-multiline.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Fred_Xu/archive/2011/09/02/uploadify-can-not-display-queue-in-ie8.html</id><title type="text">Uploadify无法在IE浏览器下显示上传文件队列queue的解决方法</title><summary type="text">公司有个比较急的页面使用了基于jquery+flash的上传插件Uploadify，开发中碰到了一个很奇怪的兼容问题，uploadify选择好要上传的文件在IE浏览器下不显示，而在chrome和ff下是ok的，坑爹啊。于是自己动手找问题所在，可惜没找到，google了一下，终于在uploadify官网论坛里找到了解决方法：原文：http://www.uploadify.com/forums/discussion/3247/upload-queue-never-appears-in-ie7-with-jquery-ui-tabs/p1其实很简单，只要动手改造下uploadify.min.js即可</summary><published>2011-09-02T09:10:00Z</published><updated>2011-09-02T09:10:00Z</updated><author><name>Fred_Xu</name><uri>http://www.cnblogs.com/Fred_Xu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/02/uploadify-can-not-display-queue-in-ie8.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/02/uploadify-can-not-display-queue-in-ie8.html"/><content type="html">&lt;p&gt;公司有个比较急的页面使用了基于jquery+flash的上传插件Uploadify，开发中碰到了一个很奇怪的兼容问题，uploadify选择好要上传的文件在IE浏览器下不显示，而在chrome和ff下是ok的，坑爹啊。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/40302/2011090222521814.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;于是自己动手找问题所在，可惜没找到，google了一下，终于在uploadify官网论坛里找到了解决方法：&lt;/p&gt;&#xD;
&lt;p&gt;原文：&lt;a href="http://www.uploadify.com/forums/discussion/3247/upload-queue-never-appears-in-ie7-with-jquery-ui-tabs/p1"&gt;http://www.uploadify.com/forums/discussion/3247/upload-queue-never-appears-in-ie7-with-jquery-ui-tabs/p1&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;其实很简单，只要动手改造下uploadify.min.js即可：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #000000;"&gt;queue &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;#&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; jQuery(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;).attr(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;Queue&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;改为&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; queue &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;#&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; jQuery(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;).attr(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;id&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;Queue&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;Yes，解决！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Fred_Xu/aggbug/2163989.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Fred_Xu/archive/2011/09/02/uploadify-can-not-display-queue-in-ie8.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Fred_Xu/archive/2011/08/09/fluent-interface-for-webrequest-class.html</id><title type="text">Fluent Interface for WebRequest class</title><summary type="text">以前，我经常使用WebRequest来获取远程端的数据，我也使用它来从Google APIs获取JSON数据，从其他一些远程端获取RSS、ATOM数据，一切都很正常，我只是这样来写代码：var buffer = Encoding.ASCII.GetBytes(&amp;quot;q=Queen Elizabeth II&amp;amp;video=on&amp;amp;audio=on&amp;amp;text=on&amp;quot;); var webReq = (HttpWebRequest)WebRequest.Create(&amp;quot;http://www.bbc.co.uk/search/news/&amp;quot;); we</summary><published>2011-08-09T04:53:00Z</published><updated>2011-08-09T04:53:00Z</updated><author><name>Fred_Xu</name><uri>http://www.cnblogs.com/Fred_Xu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Fred_Xu/archive/2011/08/09/fluent-interface-for-webrequest-class.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Fred_Xu/archive/2011/08/09/fluent-interface-for-webrequest-class.html"/><content type="html">&lt;p&gt;以前，我经常使用&lt;span style="color: #008000;"&gt;WebRequest&lt;/span&gt;来获取远程端的数据，我也使用它来从Google APIs获取JSON数据，从其他一些远程端获取RSS、ATOM数据，一切都很正常，我只是这样来写代码：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;var buffer = Encoding.ASCII.GetBytes("q=Queen Elizabeth II&amp;amp;video=on&amp;amp;audio=on&amp;amp;text=on");&#xD;
            var webReq = (HttpWebRequest)WebRequest.Create("http://www.bbc.co.uk/search/news/");   &#xD;
            webReq.Method = "POST";&#xD;
            webReq.ContentType = "application/x-www-form-urlencoded";&#xD;
            webReq.ContentLength = buffer.Length;&#xD;
            var postData = webReq.GetRequestStream();&#xD;
            postData.Write(buffer, 0, buffer.Length);&#xD;
            postData.Close();&#xD;
            var webResp = (HttpWebResponse)webReq.GetResponse();&#xD;
            var answer = webResp.GetResponseStream();&#xD;
            var result = string.Empty;&#xD;
 &#xD;
            if (answer != null)&#xD;
            {&#xD;
                using (var tempStream = new StreamReader(answer))&#xD;
                {&#xD;
                    result = tempStream.ReadToEnd();&#xD;
                }&#xD;
            }&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;这段代码使用Post方法和GET方法，我们经常这么使用它：&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;const string getVars = "?q=Queen Elizabeth II&amp;amp;video=on&amp;amp;audio=on&amp;amp;text=on";&#xD;
 &#xD;
            var webReq = (HttpWebRequest)WebRequest.Create(string.Format("http://www.bbc.co.uk/search/news/{0}", getVars));&#xD;
            webReq.Method = "GET";&#xD;
            var webResp = (HttpWebResponse)webReq.GetResponse();&#xD;
            var answer = webResp.GetResponseStream();&#xD;
            var result = string.Empty;&#xD;
 &#xD;
            if (answer != null)&#xD;
            {&#xD;
                var tempStream = new StreamReader(answer);&#xD;
                result = tempStream.ReadToEnd();&#xD;
            }&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span color="#030303" face="Verdana, Arial, Helvetica, sans-serif" style="color: #030303; font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&lt;span  style="line-height: normal;"&gt;这段代码可以使用，没有问题。&lt;/span&gt;&lt;/span&gt;&lt;span  style="color: #030303; font-family: Verdana, Arial, Helvetica, sans-serif; line-height: normal;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.net.webrequest%28v=vs.71%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.net.webrequest(v=vs.71).aspx" style="color: #3399ff;"&gt;WebRequest&amp;nbsp;&lt;/a&gt;类非常酷。但是我们使用&lt;/span&gt;&lt;span  style="color: #030303; font-family: Verdana, Arial, Helvetica, sans-serif; line-height: normal;"&gt;&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Fluent_interface" mce_href="http://en.wikipedia.org/wiki/Fluent_interface" style="color: #3399ff;"&gt;Fluent Interface&lt;/a&gt;&amp;nbsp;让它更加棒，易读更具语义。Fluent Interface非常适合这个case，我们可以使这段代码更有意思。我喜欢优美的代码，怎样让代码来表达它自己。你觉得这段代码酷吗?&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;var result = RequestSubmitter.GetInstance()&#xD;
                           .WithUrl("http://www.bbc.co.uk/search/news/")&#xD;
                           .Item.WithNameIs("q").ValueIs("Queen Elizabeth II")&#xD;
                           .ConnectWith.Item.WithNameIs("video").ValueIs("on")&#xD;
                           .ConnectWith.Item.WithNameIs("audio").ValueIs("on")&#xD;
                           .ConnectWith.Item.WithNameIs("text").ValueIs("on")&#xD;
                           .WithRequestTypeIs(RequestMethodType.Post)&#xD;
                           .BuildUrl()&#xD;
                           .GetDataFromUrl();&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-right: 0px; margin-left: 0px;"&gt;这就是Fluent Interface。你可以使用代码配置所有东西，并且你可以更好的阅读它。下面这张是Fluent Interface的类图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-right: 0px; margin-left: 0px;"&gt;&lt;img src="http://weblogs.asp.net/blogs/thangchung/FluentWebRequest/FluentWebRequest_1.png" mce_src="http://weblogs.asp.net/blogs/thangchung/FluentWebRequest/FluentWebRequest_1.png" style="max-width: 100%; margin: 0.5em;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #030303; font-family: Verdana, Arial, Helvetica, sans-serif; line-height: normal;"&gt;&lt;/span&gt;&lt;span  style="color: #030303; font-family: Verdana, Arial, Helvetica, sans-serif; line-height: normal;"&gt;所有红色箭头指向的Fluent Interface的流程，正如你所看到的，流程从&lt;/span&gt;&lt;span  style="color: #030303; font-family: Verdana, Arial, Helvetica, sans-serif; line-height: normal;"&gt;IRequestSubmitter =&amp;gt; IRequestDataBuilder =&amp;gt; IRequestItem =&amp;gt; IRequestItemName =&amp;gt; IRequestType =&amp;gt; IAndConnection =&amp;gt; IRequestDataBuilder，最后将在&lt;/span&gt;&lt;span  style="color: #030303; font-family: Verdana, Arial, Helvetica, sans-serif; line-height: normal;"&gt;IRequestDataBuilder and IRequestItem之间循环。很简单，不是吗？没有任何秘密在里面。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-right: 0px; margin-left: 0px;"&gt;GET和POST请求方法，如下图：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-right: 0px; margin-left: 0px;"&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-right: 0px; margin-left: 0px;"&gt;&lt;img src="http://weblogs.asp.net/blogs/thangchung/FluentWebRequest/FluentWebRequest_2.png" mce_src="http://weblogs.asp.net/blogs/thangchung/FluentWebRequest/FluentWebRequest_2.png" style="max-width: 100%; margin: 0.5em;" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span  style="color: #030303; font-family: Verdana, Arial, Helvetica, sans-serif; line-height: normal;"&gt;&lt;/span&gt;&lt;span  style="color: #030303; font-family: Verdana, Arial, Helvetica, sans-serif; line-height: normal;"&gt;该项目源代码：&lt;a href="http://fluentwebrequest.codeplex.com/" style="color: #3399ff;"&gt;http://fluentwebrequest.codeplex.com/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;原文地址：&lt;a href="http://weblogs.asp.net/thangchung/archive/2011/05/18/fluent-interface-for-webrequest-class.aspx"&gt;http://weblogs.asp.net/thangchung/archive/2011/05/18/fluent-interface-for-webrequest-class.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Fred_Xu/aggbug/2132097.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Fred_Xu/archive/2011/08/09/fluent-interface-for-webrequest-class.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Fred_Xu/archive/2011/05/23/Microsoft-OLE-DB-Provider-for-ODBC-Drivers-error-80004005.html</id><title type="text">Microsoft OLE DB Provider for ODBC Drivers 错误 &amp;#39;80004005&amp;#39;</title><summary type="text">最近在部署asp网站到客户服务器上的时候发生了两个错误，如下：Microsoft OLE DB Provider for ODBC Drivers 错误 &amp;#39;80004005&amp;#39;[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 &amp;#39;Temporary (volatile) Jet DSN for process 0x174 Thread 0xa28 DBC 0x7ef2024 Jet&amp;#39;。Microsoft OLE DB Provider for ODBC Drivers 错误 &amp;#39;80004005&amp;</summary><published>2011-05-23T07:16:00Z</published><updated>2011-05-23T07:16:00Z</updated><author><name>Fred_Xu</name><uri>http://www.cnblogs.com/Fred_Xu/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Fred_Xu/archive/2011/05/23/Microsoft-OLE-DB-Provider-for-ODBC-Drivers-error-80004005.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Fred_Xu/archive/2011/05/23/Microsoft-OLE-DB-Provider-for-ODBC-Drivers-error-80004005.html"/><content type="html">&lt;p&gt;&lt;strong&gt;最近在部署asp网站到客户服务器上的时候发生了两个错误，如下：&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'&amp;nbsp;&lt;br /&gt;[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x174 Thread 0xa28 DBC 0x7ef2024 Jet'。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'&amp;nbsp;&lt;br /&gt;[Microsoft][ODBC Microsoft Access Driver] Microsoft Jet 数据库引擎打不开文件'(未知的)'。 它已经被别的用户以独占方式打开，或没有查看数据的权限。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;老样子先google再百度，搜了一大堆解决方法，这里转个比较靠谱的吧。&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;方法1：&lt;/p&gt;&#xD;
&lt;p&gt;错误类型： Microsoft OLE DB Provider for ODBC Drivers &#xD;
(&amp;rsquo;0&amp;times;80004005&amp;prime;)&lt;br /&gt;[Microsoft][ODBC Microsoft Access Driver] Microsoft Jet &#xD;
数据库引擎打不开文件&amp;rsquo;(未知的)&amp;rsquo;。 它已经被别的用户以独占方式打开，或没有查看数据的权限。&lt;br /&gt;/conn.asp, 第 6 行&lt;br /&gt;解决方法：&lt;/p&gt;&#xD;
&lt;p&gt;１.在asp操作数据库时出现&amp;ldquo;操作必须使用一个可更新的查询&amp;rdquo;错误：&lt;/p&gt;&#xD;
&lt;p&gt;2.文件夹&amp;mdash;&amp;mdash;〉属性；或，资源管理器&amp;mdash;&amp;mdash;〉工具&amp;mdash;&amp;mdash;〉文件夹选项&lt;/p&gt;&#xD;
&lt;p&gt;3.在&amp;ldquo;查看&amp;rdquo;选项卡中不钩选&amp;ldquo;使用简单文件共享&amp;rdquo;&lt;/p&gt;&#xD;
&lt;p&gt;4.这样，你在XP下NTFS分区文件夹右键，也能看到如WIN2000一样的&amp;ldquo;安全&amp;rdquo;选项卡了&lt;/p&gt;&#xD;
&lt;p&gt;5.在&amp;ldquo;安全&amp;rdquo;选项卡下，点击&amp;ldquo;添加&amp;hellip;&amp;hellip;&amp;rdquo;，跳出&amp;ldquo;选择用户和组&amp;rdquo;对话框&lt;/p&gt;&#xD;
&lt;p&gt;6.然后点击&amp;ldquo;立即查找&amp;rdquo;，在下图所示的列表中选择&amp;ldquo;IUSR_&amp;rdquo;（下划线之后是你的计算机名）&lt;/p&gt;&#xD;
&lt;p&gt;7.之后在&amp;ldquo;安全&amp;rdquo;选项卡中就会出现&amp;ldquo;Internet来宾帐户&amp;rdquo;，将这个帐户的权限设置为&amp;ldquo;可修改&amp;rdquo;和&amp;ldquo;可写入&amp;rdquo;&lt;/p&gt;&#xD;
&lt;p&gt;最后按确定，问题得到解决，不会再出现&amp;ldquo;Microsoft OLE DB Provider for &#xD;
ODBC Drivers (0&amp;times;80004005)&amp;rdquo;错误 ！&lt;/p&gt;&#xD;
&lt;p&gt;方法2：&lt;/p&gt;&#xD;
&lt;p&gt;错误类型：&lt;br /&gt;Microsoft OLE DB Provider for ODBC Drivers &#xD;
(&amp;rsquo;0&amp;times;80004005&amp;prime;)&lt;br /&gt;[Microsoft][ODBC Microsoft Access Driver] Microsoft Jet &#xD;
数据库引擎打不开文件&amp;rsquo;(未知的)&amp;rsquo;。 它已经被别的用户以独占方式打开，或没有查看数据的权限。&lt;br /&gt;/conn.asp, 第 6 行&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;C:\Windows\Temp,添加everyone权限!&lt;/p&gt;&#xD;
&lt;p&gt;错误详情：&lt;/p&gt;&#xD;
&lt;p&gt;IIS设置好之后打开ASP网站时总提示：Microsoft OLE DB Provider for &#xD;
ODBC Drivers 错误 &amp;lsquo;80004005&amp;prime;&lt;br /&gt;[Microsoft][ODBC Microsoft Access Driver]常见错误 &#xD;
不能打开注册表关键字 &amp;lsquo;Temporary (volatile) Jet DSN for process 0&amp;times;728 Thread 0&amp;times;854 DBC &#xD;
0&amp;times;276fb44 Jet&amp;rsquo;&lt;/p&gt;&#xD;
&lt;p&gt;方法步骤：&lt;br /&gt;1、在WINSOWS/TEMP目录的安全选项中，添加帐号everyone具有可写权限（非NTFS文件系统则跳过此步骤）；&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;以上解决方法可能你刷新网站页面还是错误，只需在最后一步重新回收下iis的进程。&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Fred_Xu/aggbug/2054350.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Fred_Xu/archive/2011/05/23/Microsoft-OLE-DB-Provider-for-ODBC-Drivers-error-80004005.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
