<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_每天都有新发现</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/35823/rss</id><updated>2012-05-30T14:47:09Z</updated><author><name>鹏鹏lovely</name><uri>http://www.cnblogs.com/dupeng0811/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dupeng0811/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/35823/rss"/><entry><id>http://www.cnblogs.com/dupeng0811/archive/2012/05/30/2527045.html</id><title type="text">difference between Html.TextBox and Html.TextBoxFor</title><summary type="text">Html.TextBoxis not strongly typed and it doesn't require a strongly typed view meaning that you can hardcode whatever name you want as first argument and provide it a value:&lt;%= Html.TextBox("foo", "some value") %&gt;You can set some value in theViewDatadictionary inside th</summary><published>2012-05-30T14:15:00Z</published><updated>2012-05-30T14:15:00Z</updated><author><name>鹏鹏lovely</name><uri>http://www.cnblogs.com/dupeng0811/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dupeng0811/archive/2012/05/30/2527045.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dupeng0811/archive/2012/05/30/2527045.html"/><content type="html">&lt;p&gt;&lt;code&gt;Html.TextBox&lt;/code&gt;&amp;nbsp;is not strongly typed and it doesn't require a strongly typed view meaning that you can hardcode whatever name you want as first argument and provide it a value:&lt;/p&gt;&lt;code&gt;&amp;lt;%= Html.TextBox("foo", "some value") %&amp;gt;&lt;br/&gt;&lt;/code&gt;&lt;p&gt;You can set some value in the&amp;nbsp;&lt;code&gt;ViewData&lt;/code&gt;&amp;nbsp;dictionary inside the controller action and the helper will use this value when rendering the textbox (&lt;code&gt;ViewData["foo"] = "bar"&lt;/code&gt;).&lt;/p&gt;&lt;p&gt;&lt;code&gt;Html.TextBoxFor&lt;/code&gt;&amp;nbsp;is requires a strongly typed view and uses the view model:&lt;/p&gt;&lt;code&gt;&amp;lt;%= Html.TextBoxFor(x =&amp;gt; x.Foo) %&amp;gt;&lt;br/&gt;&lt;/code&gt;&lt;p&gt;The helper will use the lambda expression to infer the name and the value of the view model passed to the view.&lt;/p&gt;&lt;p&gt;And because it is a good practice to use strongly typed views and view models you should always use the&amp;nbsp;&lt;code&gt;Html.TextBoxFor&lt;/code&gt;&amp;nbsp;helper.&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dupeng0811/aggbug/2527045.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dupeng0811/archive/2012/05/30/2527045.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dupeng0811/archive/2012/05/25/2518506.html</id><title type="text">ASP.NET  File.Delete只读文件引起的访问被拒绝,设置文件属性为Normal</title><summary type="text">new FileInfo(f).Attributes = FileAttributes.Normal; File.Delete(f);设置文件属性为Normal，然后再执行删除操作。</summary><published>2012-05-25T10:41:00Z</published><updated>2012-05-25T10:41:00Z</updated><author><name>鹏鹏lovely</name><uri>http://www.cnblogs.com/dupeng0811/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dupeng0811/archive/2012/05/25/2518506.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dupeng0811/archive/2012/05/25/2518506.html"/><content type="html">&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;      &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; FileInfo(f).Attributes =&lt;span style="color: #000000;"&gt; FileAttributes.Normal;&lt;br/&gt;      File.Delete(f);&lt;/span&gt;&lt;/div&gt;&lt;p&gt;设置文件属性为Normal，然后再执行删除操作。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dupeng0811/aggbug/2518506.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dupeng0811/archive/2012/05/25/2518506.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dupeng0811/archive/2012/05/14/FileInfo-MoveTo.html</id><title type="text">C# 文件重命名的处理方法</title><summary type="text">C#里面，重命名文件时，没有rename这个功能，使用的是FileInfo.MoveTo的方式，MoveTo 到原目录里一个新的名字，即实现了重命名 string newName = txtFileName.Text.Trim(); string oldName = Request.QueryString["fileName"]; RSPSession sessionRsp = (RSPSession)Session["RSPSetting"]; string basePat...</summary><published>2012-05-14T12:54:00Z</published><updated>2012-05-14T12:54:00Z</updated><author><name>鹏鹏lovely</name><uri>http://www.cnblogs.com/dupeng0811/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dupeng0811/archive/2012/05/14/FileInfo-MoveTo.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dupeng0811/archive/2012/05/14/FileInfo-MoveTo.html"/><content type="html">&lt;p&gt;&lt;span&gt;C#里面，重命名文件时，没有&amp;nbsp;&lt;/span&gt;&lt;em&gt;rename&lt;/em&gt;&lt;span&gt;&amp;nbsp;这个功能，使用的是FileInfo.MoveTo的方式，MoveTo 到原目录里一个新的名字，即实现了重命名&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;                &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; newName =&lt;span style="color: #000000;"&gt; txtFileName.Text.Trim();&lt;br/&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; oldName = Request.QueryString[&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;fileName&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br/&gt;                RSPSession sessionRsp &lt;/span&gt;= (RSPSession)Session[&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;RSPSetting&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;br/&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; basePath =&lt;span style="color: #000000;"&gt; sessionRsp.BaseFolder;&lt;br/&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; currPath = basePath +&lt;span style="color: #000000;"&gt; sessionRsp.CurrentRelFolder;&lt;br/&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; sourceFileName = &lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (!&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(newName))&lt;br/&gt;                {&lt;br/&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; currFilePath =&lt;span style="color: #000000;"&gt; Path.Combine(currPath, oldName);&lt;br/&gt;                    sourceFileName &lt;/span&gt;=&lt;span style="color: #000000;"&gt; currFilePath;&lt;br/&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; extension = sourceFileName.Substring(sourceFileName.LastIndexOf(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;.&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;),&lt;br/&gt;                                            sourceFileName.Length &lt;/span&gt;- sourceFileName.LastIndexOf(&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;.&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;));&lt;br/&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (File.Exists(Path.Combine(currPath, newName+&lt;span style="color: #000000;"&gt;extension)))&lt;br/&gt;                    {&lt;br/&gt;                        Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;文件夹中存在此名称文件，请更改文件名。&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br/&gt;                    }&lt;br/&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;                    {&lt;br/&gt;                        currFilePath &lt;/span&gt;=&lt;span style="color: #000000;"&gt; Path.Combine(currPath, newName);&lt;br/&gt;                        FileInfo fileInfo &lt;/span&gt;= &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FileInfo(sourceFileName);&lt;br/&gt;                        fileInfo.MoveTo(currFilePath &lt;/span&gt;+&lt;span style="color: #000000;"&gt; extension);&lt;br/&gt;                        Response.Write(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;script&amp;gt;self.parent.tb_remove();&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br/&gt;                    }&lt;br/&gt;                }&lt;/span&gt;&lt;/div&gt;&lt;h1 class="title"&gt;FileInfo.MoveTo 方法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;将指定文件移到新位置，并提供指定新文件名的选项。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dupeng0811/aggbug/2500132.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dupeng0811/archive/2012/05/14/FileInfo-MoveTo.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dupeng0811/archive/2012/05/14/Thickbox-Url.html</id><title type="text">thickbox中url传递参数的问题解决 -修改Thickbox.js</title><summary type="text">1.打开thickbox.js 文件.2.搜索urlNoQuery找到如下代码:if(url.indexOf('TB_iframe') != -1){urlNoQuery = url.。。。之类把这里的 urlNoQuery句替换为：urlNoQuery=url;这是因为原文件中语句删除了url的所有参数，为了传递参数，必须使用原来的url。修改后的部分： if(url.indexOf('TB_iframe') != -1){// either iframe or ajax window //urlNoQuery = url.split('T...</summary><published>2012-05-14T12:49:00Z</published><updated>2012-05-14T12:49:00Z</updated><author><name>鹏鹏lovely</name><uri>http://www.cnblogs.com/dupeng0811/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dupeng0811/archive/2012/05/14/Thickbox-Url.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dupeng0811/archive/2012/05/14/Thickbox-Url.html"/><content type="html">&lt;p&gt;1.打开thickbox.js 文件.&lt;/p&gt;&lt;p&gt;2.搜索&amp;nbsp;&lt;span&gt;urlNoQuery&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;找到如下代码:&lt;/p&gt;&lt;p&gt;if(url.indexOf('TB_iframe') != -1){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;urlNoQuery = url.。。。之类&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;把这里的 urlNoQuery句替换为：&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;urlNoQuery=url;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;这是因为原文件中语句删除了url的所有参数，为了传递参数，必须使用原来的url。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;修改后的部分：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(url.indexOf('TB_iframe') != -1){&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; either iframe or ajax window&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;                &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;urlNoQuery = url.split('TB_');&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;                urlNoQuery &lt;/span&gt;=&lt;span style="color: #000000;"&gt; url;&lt;br/&gt;                    $(&lt;/span&gt;"#TB_iframeContent"&lt;span style="color: #000000;"&gt;).remove();&lt;br/&gt;                    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(params['modal'] != "true"){&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;iframe no modal&lt;/span&gt;&lt;br/&gt;                        $("#TB_window").append("&amp;lt;div id='TB_title'&amp;gt;&amp;lt;div id='TB_ajaxWindowTitle'&amp;gt;"+caption+"&amp;lt;/div&amp;gt;&amp;lt;div id='TB_closeAjaxWindow'&amp;gt;&amp;lt;a href='#' id='TB_closeWindowButton' title='Close'&amp;gt;close&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;iframe frameborder='0' hspace='0' src='"+urlNoQuery+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' &amp;gt; &amp;lt;/iframe&amp;gt;"&lt;span style="color: #000000;"&gt;);&lt;br/&gt;                    }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;{&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;iframe modal&lt;/span&gt;&lt;br/&gt;                    $("#TB_overlay"&lt;span style="color: #000000;"&gt;).unbind();&lt;br/&gt;                        $(&lt;/span&gt;"#TB_window").append("&amp;lt;iframe frameborder='0' hspace='0' src='"+urlNoQuery+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'&amp;gt; &amp;lt;/iframe&amp;gt;"&lt;span style="color: #000000;"&gt;);&lt;br/&gt;                    }&lt;br/&gt;            }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;{&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; not an iframe, ajax&lt;/span&gt;&lt;br/&gt;                    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;($("#TB_window").css("display") != "block"&lt;span style="color: #000000;"&gt;){&lt;br/&gt;                        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(params['modal'] != "true"){&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;ajax no modal&lt;/span&gt;&lt;br/&gt;                        $("#TB_window").append("&amp;lt;div id='TB_title'&amp;gt;&amp;lt;div id='TB_ajaxWindowTitle'&amp;gt;"+caption+"&amp;lt;/div&amp;gt;&amp;lt;div id='TB_closeAjaxWindow'&amp;gt;&amp;lt;a href='#' id='TB_closeWindowButton'&amp;gt;close&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div id='TB_ajaxContent' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px'&amp;gt;&amp;lt;/div&amp;gt;"&lt;span style="color: #000000;"&gt;);&lt;br/&gt;                        }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;{&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;ajax modal&lt;/span&gt;&lt;br/&gt;                        $("#TB_overlay"&lt;span style="color: #000000;"&gt;).unbind();&lt;br/&gt;                        $(&lt;/span&gt;"#TB_window").append("&amp;lt;div id='TB_ajaxContent' class='TB_modal' style='width:"+ajaxContentW+"px;height:"+ajaxContentH+"px;'&amp;gt;&amp;lt;/div&amp;gt;"&lt;span style="color: #000000;"&gt;);    &lt;br/&gt;                        }&lt;br/&gt;                    }&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;{&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;this means the window is already up, we are just loading new content via ajax&lt;/span&gt;&lt;br/&gt;                        $("#TB_ajaxContent")[0].style.width = ajaxContentW +"px"&lt;span style="color: #000000;"&gt;;&lt;br/&gt;                        $(&lt;/span&gt;"#TB_ajaxContent")[0].style.height = ajaxContentH +"px"&lt;span style="color: #000000;"&gt;;&lt;br/&gt;                        $(&lt;/span&gt;"#TB_ajaxContent")[0].scrollTop = 0&lt;span style="color: #000000;"&gt;;&lt;br/&gt;                        $(&lt;/span&gt;"#TB_ajaxWindowTitle"&lt;span style="color: #000000;"&gt;).html(caption);&lt;br/&gt;                    }&lt;br/&gt;            }&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&lt;a id="ctl01_lnkTitle" href="http://www.cnblogs.com/dupeng0811/archive/2011/03/11/1981270.html"&gt;Jquery插件Thickbox的使用总结及自定义设置&lt;/a&gt;&lt;a href="http://www.cnblogs.com/dupeng0811/archive/2011/03/11/1981270.html"&gt;http://www.cnblogs.com/dupeng0811/archive/2011/03/11/1981270.html&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dupeng0811/aggbug/2500012.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dupeng0811/archive/2012/05/14/Thickbox-Url.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dupeng0811/archive/2012/04/27/2473933.html</id><title type="text">IHttpHandler中使用Session问题必须继续IRequiresSessionState接口</title><summary type="text">在实现自己的Handler的时候只需要继承IHttpHandler接口就行了，在Handler中使用Session时，只需要继承一下IRequiresSessionState就行了指定目标 HTTP 处理程序需要对会话状态值具有读写访问权。这是一个标记接口，没有任何方法。在自定义 HTTP 处理程序中实现IRequiresSessionState接口，以确定处理程序是否需要对会话状态值具有读写访问权。http://msdn.microsoft.com/zh-cn/library/system.web.sessionstate.irequiressessionstate.aspx</summary><published>2012-04-27T09:52:00Z</published><updated>2012-04-27T09:52:00Z</updated><author><name>鹏鹏lovely</name><uri>http://www.cnblogs.com/dupeng0811/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dupeng0811/archive/2012/04/27/2473933.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dupeng0811/archive/2012/04/27/2473933.html"/><content type="html">&lt;p&gt;&lt;span&gt;在实现自己的Handler的时候只需要继承&lt;/span&gt;&lt;span style="font-family: Verdana;"&gt;IHttpHandler接口就行了，在Handler中使用Session时，只需要继承一下&lt;span style="font-family: Verdana;"&gt;IRequiresSessionState&lt;/span&gt;就行了&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span id="mt1" class="sentence" data-guid="a96d8d97e2fd480aa8022917b9cfb475" data-source="Specifies that the target HTTP handler requires read and write access to session-state values."&gt;指定目标 HTTP 处理程序需要对会话状态值具有读写访问权。&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span id="mt2" class="sentence" data-guid="854cb76c566b172538403a4545461a65" data-source="This is a marker interface and has no methods."&gt;这是一个标记接口，没有任何方法。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span class="sentence" data-guid="854cb76c566b172538403a4545461a65" data-source="This is a marker interface and has no methods."&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span class="sentence" data-guid="854cb76c566b172538403a4545461a65" data-source="This is a marker interface and has no methods."&gt;&lt;span&gt;在自定义 HTTP 处理程序中实现&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span class="selflink"&gt;IRequiresSessionState&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;接口，以确定处理程序是否需要对会话状态值具有读写访问权。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span class="sentence" data-guid="854cb76c566b172538403a4545461a65" data-source="This is a marker interface and has no methods."&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span class="sentence" data-guid="854cb76c566b172538403a4545461a65" data-source="This is a marker interface and has no methods."&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Verdana;"&gt;&lt;span class="sentence" data-guid="854cb76c566b172538403a4545461a65" data-source="This is a marker interface and has no methods."&gt;&lt;span&gt;http://msdn.microsoft.com/zh-cn/library/system.web.sessionstate.irequiressessionstate.aspx&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dupeng0811/aggbug/2473933.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dupeng0811/archive/2012/04/27/2473933.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dupeng0811/archive/2012/04/05/2432952.html</id><title type="text">【转帖】WEB架构师成长之路之一-走正确的路</title><summary type="text">原文地址：http://www.cnblogs.com/seesea125/archive/2012/03/30/2425281.html本人也是coding很多年，虽然很失败，但也总算有点失败的心得，不过我在中国，大多数程序员都是像我一样，在一直走着弯路，如果想成为一个架构师，就必须走正确的路，否则离目标越来越远，正在辛苦工作的程序员们，你们有没有下面几种感觉？一、 我的工作就是按时完成领导交给我的任务，至于代码写的怎样，知道有改进空间，但没时间去改进，关键是领导也不给时间啊。二、 我发现我的水平总是跟不上技术的进步，有太多想学的东西要学，Jquery用的人最近比较多啊，听说最近MVC比较火</summary><published>2012-04-05T04:20:00Z</published><updated>2012-04-05T04:20:00Z</updated><author><name>鹏鹏lovely</name><uri>http://www.cnblogs.com/dupeng0811/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dupeng0811/archive/2012/04/05/2432952.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dupeng0811/archive/2012/04/05/2432952.html"/><content type="html">&lt;p&gt;&lt;span&gt;原文地址：&lt;a href="http://www.cnblogs.com/seesea125/archive/2012/03/30/2425281.html#top"&gt;http://www.cnblogs.com/seesea125/archive/2012/03/30/2425281.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;本人也是coding很多年，虽然很失败，但也总算有点失败的心得，不过我在中国，大多数程序员都是像我一样，在一直走着弯路，如果想成为一个架构师，就必须走正确的路，否则离目标越来越远，正在辛苦工作的程序员们，你们有没有下面几种感觉？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;一、&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我的工作就是按时完成领导交给我的任务，至于代码写的怎样，知道有改进空间，但没时间去改进，关键是领导也不给时间啊。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;二、&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我发现我的水平总是跟不上技术的进步，有太多想学的东西要学，Jquery用的人最近比较多啊，听说最近MVC比较火，还有LINQ，听说微软又有Silverlight了&amp;hellip;&amp;hellip;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;三、&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我发现虽然我工作几年了，除了不停的coding，Ctrl+c和Ctrl+V更熟练了，但编码水平并没有提高，还是一个普通程序员，但有人已经做到架构师了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;四、&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 工作好几年了，想跳槽换个工作，结果面试的考官都问了一些什么数据结构，什么垃圾回收，什么设计模式之类的东西，虽然看过，但是平时用不着，看了也忘记了，回答不上来，结果考官说我基础太差。。。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;有没有，如果没有，接下来就不用看了，你一定是大拿了，或者已经明白其中之道了，呵呵。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;如果有，恭喜你，你进入学习误区了，如果想在技术上前进的话，就不能一直的coding，为了完成需求而工作，必须在coding的同时，让我们的思维，水平也在不停的提高。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;写代码要经历下面几个阶段。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;一 、你必须学习面向对象的基础知识，如果连这个都忘了，那你的编程之路注定是在做原始初级的重复！&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 很多程序员都知道类、方法、抽象类、接口等概念，但是为什么要面向对象，好处在哪里，要解决什么问题？只是明白概念，就是表达不清楚，然后在实际工作中也用不上，过了一段时间，面向对象的东西又模糊了，结果是大多数程序员用着面向对象的语言做着面向过程的工作，因此要学习面向对象，首先应该明白面向对象的目的是什么？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;面向对象的目的是什么？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;开发语言在不断发展，从机器语言，到汇编，到高级语言，再到第四代语言;软件开发方法在不断发展，从面向过程，面向对象，到面向方面等。虽然这些都在不断发展，但其所追求的目标却一直没变，这些目标就是：&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; 1.降低软件开发的复杂度&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; 2.提高软件开发的效率&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; 3.提高软件质量：可维护性，可扩展性，可重用性等。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 其中语言的发展，开发方法的发展在1,2两条上面取得了极大的进步，但对于第3条，我们不能光指望开发方法本身来解决。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;提高软件质量：可维护性，可扩展性，可重用性等，再具体点，就是高内聚、低耦合，面向对象就是为了解决第3条的问题。因此要成为一个好的程序员，最绕不开的就是面向对象了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;二、 要想学好面向对象，就必须学习设计模式。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;假定我们了解了面向对象的目的，概念了，但是我们coding过程中却发现，我们的面向对象的知识似乎一直派不上用场，其实道理很简单，是因为我们不知道怎么去用，就像游泳一样，我们已经明白了游泳的好处，以及游泳的几种姿势，狗刨、仰泳、蛙泳、自由泳，但是我们依然不会游泳。。。。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;因此有了这些基本原则是不行的，我们必须有一些更细的原则去知道我们的设计，这就有了更基础的面向对象的五大原则，而把这几种原则更详细的应用到实际中来，解决实际的问题，这就是设计模式，因此要学好OO，必须要学习设计模式，学习设计模式，按大师的话说，就是在人类努力解决的许多领域的成功方案都来源于各种模式，教育的一个重要目标就是把知识的模式一代一代传下去。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;因此学习设计模式，就像我们在看世界顶级的游泳比赛，我们为之疯狂，为之着迷。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;三 学习设计模式&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;正像我们并不想只是看别人表演，我们要自己学会游泳，这才是我们的目的所在。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;当我们看完几篇设计模式后，我们为之精神振奋，在新的coding的时候，我们总是想努力的用上学到的设计模式，但是经常在误用模式，折腾半天发现是在脱裤子抓痒。。。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;当学完设计模式之后，我们又很困惑，感觉这些模式简直太像了，很多时候我们分不清这些模式之间到底有什么区别，而且明白了设计过程中的一个致命的东西--过度设计，因为设计模式要求我们高扩展性，高重用性，但是在需求提出之初，我们都不是神，除了依靠过去的经验来判断外，我们不知道哪些地方要扩展，哪些地方要重用，而且过去的经验就一定是正确的吗？所以我们甚至不敢再轻易用设计模式，而是还一直在用面向过程的方法在实现需求。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;四 学习重构&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;精彩的代码是怎么想出来的，比看到精彩的代码更加令人期待，于是我们开始思考，这些大师们莫非不用工作，需求来了没有领导规定完成时间，只以设计精彩的代码为标准来开展工作？这样的工作太爽了，也不可能，老板不愿意啊。就算这些理想的条件他都有，他就一开始就设计出完美的代码来了？也不可能啊，除非他是神，一开始就预料到未来的所有需求，那既然这些条件都没有，他们如何写出的精彩代码？&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Joshua Kerievsky在那篇著名的《模式与XP》〔收录于《极限编程研究》一书）中明白地指出：在设计前期使用模式常常导致过度工程（over-engineering)。这是一个残酷的现实，单凭对完美的追求无法写出实用的代码，而「实用」是软件压倒一切的要素。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;在《重构-改善既有的代码的设计》一书中提到，通过重构（refactoring），你可以找出改变的平衡点。你会发现所谓设计不再是一切动作的前提，而是在整个开发过程中逐渐浮现出来。在系统构筑过程中，你可以学习如何强化设计；其间带来的互动可以让一个程序在开发过程中持续保有良好的设计。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;总结起来就是说，我们在设计前期就使用设计模式，往往导致设计过度，因此应该在整个开发过程，整个需求变更过程中不断的重构现在的代码，才能让程序一直保持良好的设计，由此可见，开发过程中需要一直重构，否则无论当初设计多么的好，随着需求的改变，都会变成一堆烂代码，难以维护，难以扩展。所谓重构是这样一个过程：「在不改变代码外在行为的前提下，对代码做出修改，以改进程序的内部结构」。重构的目标，就是设计模式，更本质的讲就是使程序的架构更趋合理，从而提高软件的可维护性，可扩展性，可重用性。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;《重构-改善既有的代码的设计》一书也是Martin Fowler等大师的作品，软件工程领域的超级经典巨著，与另一巨著《设计模式》并称"软工双雄"，不可不读啊。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;五 开始通往优秀软件设计师的路上&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;通过设计模式和重构，我们的所学和我们工作的coding终于结合上了，我们可以在工作中用面向对象的思维去考虑问题，并开始学习重构了，这就像游泳一样，我们看完了各种顶级的游泳比赛，明白各种规则，名人使用的方法和技巧，现在是时候回家去村旁边的小河里练练了，练习也是需要有教练的，推荐另一本经典书叫《重构与模式》，引用他开篇的介绍，本书开创性地深入揭示了重构与模式这两种软件开发关键技术之间的联系，说明了通过重构实现模式改善既有的设计，往往优于在新的设计早期使用模式。本书不仅展示了一种应用模式和重构的创新方法，而且有助于读者结合实战深入理解重构和模式。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;这本书正是我们需要的教练，值得一读。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;六 没有终点，只有坚持不懈的专研和努力。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;经过了几年的坚持，终于学会了灵活的运用各种模式，我们不需要去刻意的想用什么模式，怎么重构。程序的目标，就是可维护性，可扩展性，可重用性，都已经成了一种编程习惯，一种思维习惯，就像我们联系了几年游泳之后，我们不用再刻意的去考虑，如何让自己能在水上漂起来，仰泳和蛙泳的区别..... 而是跳进水里，就自然的游了起来，朝对岸游去。但是要和大师比起来，嘿嘿，我们还有很长的路要走，最终也可能成不了大师，但无论能不能成为大师，我们已经走在了成为大师的正确的路上，我们和别的程序员已经开始不一样，因为他们无论再过多少年，他们的水平不会变，只是在重复造轮子，唯一比你快的，就是ctrl+c和ctrl+v。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;正确的路上，只要坚持，就离目标越来越近，未来就一定会是一个优秀的架构师，和优秀架构师的区别，可能只是时间问题。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dupeng0811/aggbug/2432952.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dupeng0811/archive/2012/04/05/2432952.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dupeng0811/archive/2012/03/16/Difference-Postback-Callback.html</id><title type="text">Difference between a Postback and a Callback</title><summary type="text">A Postback occurs when the data (the whole page) on the page is posted from the client to the server..ie the data is posted-back to the server, and thus the page is refreshed (redrawn)...think of it as 'sending the server the whole page (asp.net) full of data'.On the other hand, a callback is also a special kind of postback, but it is just a quick round-trip to the server to get a small set of data (normally), and thus the page is not refreshed, unlike with the postback...think of it as 'cal</summary><published>2012-03-16T05:36:00Z</published><updated>2012-03-16T05:36:00Z</updated><author><name>鹏鹏lovely</name><uri>http://www.cnblogs.com/dupeng0811/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dupeng0811/archive/2012/03/16/Difference-Postback-Callback.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dupeng0811/archive/2012/03/16/Difference-Postback-Callback.html"/><content type="html">&lt;p&gt;A Postback occurs when the data (the whole page) on the page is posted from the client to the server..ie the &lt;strong&gt;data is posted-back to the server&lt;/strong&gt;, and thus the page is refreshed (redrawn)...think of it as '&lt;strong&gt;sending the server the whole page (asp.net) full of data&lt;/strong&gt;'.&lt;/p&gt;&lt;p&gt;On the other hand, &lt;strong&gt;a callback is also a special kind of postback&lt;/strong&gt;, but it is just a quick round-trip to the server to get a small set of data (normally), and thus the page is not refreshed, unlike with the postback...think of it as '&lt;strong&gt;calling the server, and receiving &lt;em&gt;some&lt;/em&gt; data back&lt;/strong&gt;'&lt;/p&gt;&lt;p&gt;With Asp.Net, &lt;strong&gt;the ViewState is not refreshed when a callback is invoked&lt;/strong&gt;, unlike with a postback.&lt;/p&gt;&lt;p&gt;The reason that the whole page is posted with ASP.Net is because ASP.Net encloses the whole page in a &lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt; with a &lt;strong&gt;post method&lt;/strong&gt;, and so when a submit button is clicked in the page, the form is sent ot the server with all of the fields that are in the form...basically the whole page itself&lt;/p&gt;&lt;p&gt;If you are using &lt;em&gt;FireBug&lt;/em&gt; (for Firefox), you can actually see callbacks being invoked to the server in the&lt;code&gt;Console&lt;/code&gt;. That way, you will see what &lt;em&gt;specific data&lt;/em&gt; is being sent to the server (&lt;code&gt;Request&lt;/code&gt;) and also the data the server sent you back (&lt;code&gt;Response&lt;/code&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;The below image illustrates the Page Life Cycles of both a postback and a callback in a ASP.NET based Website:&lt;/p&gt;&lt;p&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="graphics_page_lifecycle" src="http://images.cnblogs.com/cnblogs_com/dupeng0811/201203/201203161335245824.png" alt="graphics_page_lifecycle" width="541" height="371" border="0" /&gt;&lt;/p&gt;&lt;p&gt;From:http://stackoverflow.com/questions/365100/difference-between-a-postback-and-a-callback&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dupeng0811/aggbug/2400125.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dupeng0811/archive/2012/03/16/Difference-Postback-Callback.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dupeng0811/archive/2012/03/15/LINQ-Expression-tree.html</id><title type="text">LINQ IN ACTION读书笔记：在运行时创建查询——表达式树</title><summary type="text">动态查询语句：之所以叫做动态查询语句是因为语句中使用的某些值，甚至之句将在运行时而不是编译时才能被最终决定。在编写查询语句时，还不能得到执行查询所需要的信息，因为这些信息可能会来自用户输入或者程序运行时的上下文，甚至在一些更高级的应用中，我们可能需要在程序运行时从无到有地完整创建出一个查询。比如，若应用程序需要查询来自多种地方的数据，例如XML文件、远程应用程序或用户等。我们可以使用最终的武器——表达式树。</summary><published>2012-03-15T15:21:00Z</published><updated>2012-03-15T15:21:00Z</updated><author><name>鹏鹏lovely</name><uri>http://www.cnblogs.com/dupeng0811/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dupeng0811/archive/2012/03/15/LINQ-Expression-tree.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dupeng0811/archive/2012/03/15/LINQ-Expression-tree.html"/><content type="html">&lt;p&gt;动态查询语句：之所以叫做动态查询语句是因为语句中使用的某些值，甚至之句将在运行时而不是编译时才能被最终决定。在编写查询语句时，还不能得到执行查询所需要的信息，因为这些信息可能会来自用户输入或者程序运行时的上下文，甚至在一些更高级的应用中，我们可能需要在程序运行时从无到有地完整创建出一个查询。比如，若应用程序需要查询来自多种地方的数据，例如XML文件、远程应用程序或用户等。我们可以使用最终的武器&amp;mdash;&amp;mdash;表达式树。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;例如：如下XML片段描述将要应用到某个图书集合上的过滤条件。&lt;/p&gt;&lt;div id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:cf0ce3a3-1677-487c-b56a-a4af220f2d5a" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;"&gt;&amp;lt;and&amp;gt;&lt;br/&gt;&amp;lt;notEqual property="Title" value="Bonjour mon Amour"/&amp;gt;&lt;br/&gt;&amp;lt;greaterThan property="pageCount" value="200"/&amp;gt;&lt;br/&gt;&amp;lt;/and&amp;gt;&lt;/div&gt;&lt;p&gt;如果直接编写这个查询,则如下:&lt;/p&gt;&lt;div id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:2d6fbd66-089a-47a7-b8b0-d1c2c5933aac" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;"&gt;var q = from book in SampleData.Books&lt;br/&gt;        where (book.Title != "Bonjour mon Amour" &amp;amp;&amp;amp; book.PageCount &amp;gt; 200)&lt;br/&gt;        select book;&lt;/div&gt;&lt;p&gt;这个查询完全定义于编译期,不过若是该XML文件在运行时才交付给程序,那么就不可能按照这种写法书写,因为程序已经编译过了,此时的解决方案就是使用表达式树.&lt;/p&gt;&lt;p&gt;创建表达式树的最简单的方法就是让编译器将Expression&amp;lt;TDelegate&amp;gt;类型的Lambda表达式转换成一系列的工厂方法调用，然后借助这些工厂方法在运行时创建表达式树。不过若是为了生成动态查询语句，那么则要以另外的方法创建表达式树。我们完全可以根据需要自行调用这些工厂方法（即一系列定义于Expression&amp;lt;TDelegate&amp;gt;类中的静态方法）来创建出表达式树，并在运行时将其编译成Lambda表达式。&lt;/p&gt;&lt;div id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:0bc04dcd-7f4f-431f-9f73-df23cc4f249f" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;"&gt;var book = Expression.Parameter(typeof (Book), "book");&lt;br/&gt;var titleExpression = Expression.NotEqual(Expression.Property(book, "Title"),&lt;br/&gt;                                          Expression.Constant("Bonjour mon Amour"));&lt;br/&gt;var pageCountExpression = Expression.GreaterThan(Expression.Property(book, "PageCount"), Expression.Constant(200));&lt;br/&gt;var andExpression = Expression.And(titleExpression, pageCountExpression);&lt;br/&gt;var predicate = Expression.Lambda(andExpression, book);&lt;br/&gt;var query = Enumerable.Where(SampleData.Books, (Func&amp;lt;Book, bool&amp;gt;) predicate.Compile());&lt;br/&gt;GridView1.DataSource = query.ToList();&lt;br/&gt;GridView1.DataBind();&lt;/div&gt;&lt;p&gt;以上从无到有创建出了一个查询表达式，用来实现XML中描述的需求。对该表达式树的每个增强操作都是通过向其添加新的表达式来实现的。倒数第三四代码将该表达式树转换为能够执行的查询语句。其中query变量的使用方法与其他的LINQ查询语句相比没有什么区别。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;LINQ IN ACTION&amp;nbsp; @2012-3-15 23:20:33&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dupeng0811/aggbug/2399492.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dupeng0811/archive/2012/03/15/LINQ-Expression-tree.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dupeng0811/archive/2012/03/15/2397970.html</id><title type="text">LINQ IN ACTION读书笔记：LINQ 使用连接 1、组连接 2、内连接 3、左外连接 4、交叉连接 使用和区别</title><summary type="text">使用的数据源类型： static public class SampleData { static public Publisher[] Publishers = { ...</summary><published>2012-03-15T05:57:00Z</published><updated>2012-03-15T05:57:00Z</updated><author><name>鹏鹏lovely</name><uri>http://www.cnblogs.com/dupeng0811/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dupeng0811/archive/2012/03/15/2397970.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dupeng0811/archive/2012/03/15/2397970.html"/><content type="html">&lt;p&gt;使用的数据源类型：&lt;/p&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7cd7731a-47cb-47b7-8bab-a7d7862491a3" class="wlWriterEditableSmartContent"&gt; static public class SampleData&lt;br/&gt;  {&lt;br/&gt;    static public Publisher[] Publishers =&lt;br/&gt;    {&lt;br/&gt;      new Publisher {Name="FunBooks"},&lt;br/&gt;      new Publisher {Name="Joe Publishing"},&lt;br/&gt;      new Publisher {Name="I Publisher"}&lt;br/&gt;    };&lt;br/&gt;&lt;br/&gt;    static public Author[] Authors =&lt;br/&gt;    {&lt;br/&gt;      new Author {FirstName="Johnny", LastName="Good"},&lt;br/&gt;      new Author {FirstName="Graziella", LastName="Simplegame"},&lt;br/&gt;      new Author {FirstName="Octavio", LastName="Prince"},&lt;br/&gt;      new Author {FirstName="Jeremy", LastName="Legrand"}&lt;br/&gt;    };&lt;br/&gt;&lt;br/&gt;    static public Subject[] Subjects =&lt;br/&gt;    {&lt;br/&gt;      new Subject {Name="Software development"},&lt;br/&gt;      new Subject {Name="Novel"},&lt;br/&gt;      new Subject {Name="Science fiction"}&lt;br/&gt;    };&lt;br/&gt;&lt;br/&gt;    static public Book[] Books =&lt;br/&gt;    {&lt;br/&gt;      new Book {&lt;br/&gt;        Title="Funny Stories",&lt;br/&gt;        Publisher=Publishers[0],&lt;br/&gt;        Authors=new[]{Authors[0], Authors[1]},&lt;br/&gt;        PageCount=101,&lt;br/&gt;        Price=25.55M,&lt;br/&gt;        PublicationDate=new DateTime(2004, 11, 10),&lt;br/&gt;        Isbn="0-000-77777-2",&lt;br/&gt;        Subject=Subjects[0]&lt;br/&gt;      },&lt;br/&gt;      new Book {&lt;br/&gt;        Title="LINQ rules",&lt;br/&gt;        Publisher=Publishers[1],&lt;br/&gt;        Authors=new[]{Authors[2]},&lt;br/&gt;        PageCount=300,&lt;br/&gt;        Price=12M,&lt;br/&gt;        PublicationDate=new DateTime(2007, 9, 2),&lt;br/&gt;        Isbn="0-111-77777-2",&lt;br/&gt;        Subject=Subjects[0]&lt;br/&gt;      },&lt;br/&gt;      new Book {&lt;br/&gt;        Title="C# on Rails",&lt;br/&gt;        Publisher=Publishers[1],&lt;br/&gt;        Authors=new[]{Authors[2]},&lt;br/&gt;        PageCount=256,&lt;br/&gt;        Price=35.5M,&lt;br/&gt;        PublicationDate=new DateTime(2007, 4, 1),&lt;br/&gt;        Isbn="0-222-77777-2",&lt;br/&gt;        Subject=Subjects[0]&lt;br/&gt;      },&lt;br/&gt;      new Book {&lt;br/&gt;        Title="All your base are belong to us",&lt;br/&gt;        Publisher=Publishers[1],&lt;br/&gt;        Authors=new[]{Authors[3]},&lt;br/&gt;        PageCount=1205,&lt;br/&gt;        Price=35.5M,&lt;br/&gt;        PublicationDate=new DateTime(2006, 5, 5),&lt;br/&gt;        Isbn="0-333-77777-2",&lt;br/&gt;        Subject=Subjects[2]&lt;br/&gt;      },&lt;br/&gt;      new Book {&lt;br/&gt;        Title="Bonjour mon Amour",&lt;br/&gt;        Publisher=Publishers[0],&lt;br/&gt;        Authors=new[]{Authors[1], Authors[0]},&lt;br/&gt;        PageCount=50,&lt;br/&gt;        Price=29M,&lt;br/&gt;        PublicationDate=new DateTime(1973, 2, 18),&lt;br/&gt;        Isbn="2-444-77777-2",&lt;br/&gt;        Subject=Subjects[1]&lt;br/&gt;      }&lt;br/&gt;    };&lt;br/&gt;  }&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;1、组连接&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;组连接是与分组查询是一样的。即根据分组得到结果。 如下例,根据publisther分组得到结果。&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 使用组连接的查询语句如下：&lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:f9226392-b58f-4ee1-92ca-eac6c45a02fb" class="wlWriterEditableSmartContent"&gt;    GridViewGroupJoin.DataSource =&lt;br/&gt;      from publisher in SampleData.Publishers&lt;br/&gt;      join book in SampleData.Books on publisher equals book.Publisher into publisherBooks&lt;br/&gt;      select new { Publisher=publisher.Name, Books=publisherBooks };&lt;br/&gt;    GridViewGroupJoin.DataBind();&lt;/div&gt;&lt;p&gt;&lt;font size="2"&gt;上述代码就是所谓的“组连接”。它将每个出版社的图书分组为PublisherBooks，并绑定到了一起。这段代码与下面代码运行结果一致。&lt;/font&gt;&lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:d2511136-90ab-48c2-9249-70fd6e1ff4d6" class="wlWriterEditableSmartContent"&gt;    var x = from book in SampleData.Books&lt;br/&gt;            group book by book.Publisher&lt;br/&gt;                into bookPublishers&lt;br/&gt;                select new { Publisher = bookPublishers.Key.Name, books = bookPublishers };&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;2、内连接&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;内连接与SqL中inner join一样，即找出两个序列的交集。如下例找出book中的Publisher存在于SampleData.Publishers的资料。&lt;/p&gt;&lt;p&gt;&amp;#160;&amp;#160;&amp;#160; 内连接查询语句如下：&lt;/p&gt;&lt;p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:40aff27e-48d1-4e7b-9a06-93f136b81d7e" class="wlWriterEditableSmartContent"&gt;GridViewInnerJoin.DataSource =&lt;br/&gt;  from publisher in SampleData.Publishers&lt;br/&gt;  join book in SampleData.Books on publisher equals book.Publisher&lt;br/&gt;  select new { Publisher=publisher.Name, Book=book.Title };&lt;br/&gt;GridViewInnerJoin.DataBind();&lt;/div&gt;&lt;/p&gt;&lt;p&gt;内连接旨在找到两个序列的交集。经过内连接操作之后，满足指定条件且分别来自两个序列中的元素将被组合到一起，形成一个新的序列。Join操作符将基于元素中的Key的匹配情况，实现内连接。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;3、左外连接&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;在内连接中，只有在两个待连接序列中均符合条件的组合才会出现在结果序列中。不过若是需要保留外部序列中的所有元素，而不管其是否有与之对应的、符合条件的内部序列元素存在，那么我们则要执行 &lt;strong&gt;左外连接&lt;/strong&gt;&amp;#160; 操作。&lt;/font&gt;  &lt;p&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:93d44b68-c502-4d14-b305-40103dab94b2" class="wlWriterEditableSmartContent"&gt;GridViewLeftOuterJoin.DataSource =&lt;br/&gt;  from publisher in SampleData.Publishers&lt;br/&gt;  join book in SampleData.Books on publisher equals book.Publisher into publisherBooks&lt;br/&gt;  from book in publisherBooks.DefaultIfEmpty()&lt;br/&gt;  select new {&lt;br/&gt;    Publisher = publisher.Name,&lt;br/&gt;    Book = book == default(Book) ? "(no books)" : book.Title&lt;br/&gt;  };&lt;br/&gt;GridViewLeftOuterJoin.DataBind();&lt;/div&gt;  &lt;/p&gt;  &lt;p&gt;DefaultIfEmpty()能够为空序列提供一个默认的元素。DefaultIfEmpty使用到了泛型的default关键词，对于引用类型将返回null，而对于值类型将返回0。对于结构体类型，则会根据其成员类型将他们对应的初始化为null或者0.&lt;/p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;4、交叉连接&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;交叉连接将计算出两个序列中所有元素的笛卡尔积。结果序列将由一个序列中的每个元素和另一个序列中的每个元素的完全组合构成。结果序列中的元素的个数为两个源序列中的元素个数的积。&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;LINQ中的交叉连接并不是通过Join操作符实现的。在linq的术语中，交叉连接是指一类投影操作，可以通过SelectMany操作符或在查询表达式中使用多个from子句来实现。&lt;/font&gt;  &lt;p&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:fe782574-3291-466d-9174-b8e5d6ae371f" class="wlWriterEditableSmartContent"&gt;GridViewCrossJoin.DataSource =&lt;br/&gt;  from publisher in SampleData.Publishers&lt;br/&gt;  from book in SampleData.Books&lt;br/&gt;  select new {&lt;br/&gt;    Correct = publisher == book.Publisher,&lt;br/&gt;    Publisher = publisher.Name,&lt;br/&gt;    Book = book.Title&lt;br/&gt;  };&lt;br/&gt;GridViewCrossJoin.DataBind();&lt;/div&gt;  &lt;/p&gt;  &lt;p&gt;SelectMany操作符方式：&lt;/p&gt;  &lt;p&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:4ce3867d-dda7-437a-b1db-bca8b0d8b5f6" class="wlWriterEditableSmartContent"&gt;SampleData.Publishers.SelectMany(publisher =&amp;gt; SampleData.Books.Select(&lt;br/&gt;                book =&amp;gt; new&lt;br/&gt;                {&lt;br/&gt;                    PublisherName = publisher.Name,&lt;br/&gt;                    BookName = book.Title&lt;br/&gt;                }&lt;br/&gt;                ));&lt;/div&gt;  &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;LINQ IN ACTION读书笔记.&lt;/p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dupeng0811/aggbug/2397970.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dupeng0811/archive/2012/03/15/2397970.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/dupeng0811/archive/2012/03/07/2383743.html</id><title type="text">【转】C# 过滤HTML，脚本，数据库关键字，特殊字符</title><summary type="text">/// &lt;summary&gt; /// 过滤标记 /// &lt;/summary&gt; /// &lt;param name="NoHTML"&gt;包括HTML，脚本，数据库关键字，特殊字符的源码 &lt;/param&gt; /// &lt;returns&gt;已经去除标记后的文字&lt;/returns&gt; public static string NoHTML(string Htmlstring) { if (Htmlstring == null) { return ""; } else { ...</summary><published>2012-03-07T08:20:00Z</published><updated>2012-03-07T08:20:00Z</updated><author><name>鹏鹏lovely</name><uri>http://www.cnblogs.com/dupeng0811/</uri></author><link rel="alternate" href="http://www.cnblogs.com/dupeng0811/archive/2012/03/07/2383743.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/dupeng0811/archive/2012/03/07/2383743.html"/><content type="html">&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #808080;"&gt;    ///&lt;/span&gt; &lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 过滤标记&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt; &lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt; &lt;span style="color: #808080;"&gt;&amp;lt;param name="NoHTML"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;包括HTML，脚本，数据库关键字，特殊字符的源码 &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt; &lt;span style="color: #808080;"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;已经去除标记后的文字&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; NoHTML(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Htmlstring)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (Htmlstring == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #800000;"&gt;""&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;删除脚本&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;script[^&amp;gt;]*?&amp;gt;.*?&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;删除HTML&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;(.[^&amp;gt;]*)&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;([\r\n])[\s]+&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;!--.*&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;(quot|#34);&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\"&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;(amp|#38);&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;(lt|#60);&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;(gt|#62);&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;(nbsp|#160);&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt; &lt;span style="color: #800000;"&gt;"&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;(iexcl|#161);&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\xa1&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;(cent|#162);&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\xa2&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;(pound|#163);&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\xa3&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;(copy|#169);&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\xa9&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;@"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;#(\d+);&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;xp_cmdshell&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;删除与数据库相关的词&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;select&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;insert&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;delete from&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;count''&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;drop table&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;truncate&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;asc&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;mid&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;char&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;xp_cmdshell&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;exec master&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;net localgroup administrators&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;and&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;net user&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;or&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;net&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Htmlstring = Regex.Replace(Htmlstring,"*", "", RegexOptions.IgnoreCase);&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Htmlstring = Regex.Replace(Htmlstring,"-", "", RegexOptions.IgnoreCase);&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;delete&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;drop&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;            Htmlstring = Regex.Replace(Htmlstring, &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;script&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;, RegexOptions.IgnoreCase);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;特殊的字符&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            Htmlstring = Htmlstring.Replace(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;);&lt;br /&gt;            Htmlstring = Htmlstring.Replace(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;);&lt;br /&gt;            Htmlstring = Htmlstring.Replace(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;*&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;);&lt;br /&gt;            Htmlstring = Htmlstring.Replace(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;-&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;);&lt;br /&gt;            Htmlstring = Htmlstring.Replace(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;?&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;);&lt;br /&gt;            Htmlstring = Htmlstring.Replace(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;,&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;);&lt;br /&gt;            Htmlstring = Htmlstring.Replace(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;);&lt;br /&gt;            Htmlstring = Htmlstring.Replace(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;);&lt;br /&gt;            Htmlstring = Htmlstring.Replace(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;*/&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;);&lt;br /&gt;            Htmlstring = Htmlstring.Replace(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;, &lt;span style="color: #800000;"&gt;""&lt;/span&gt;);&lt;br /&gt;            Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; Htmlstring;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;/div&gt;&lt;p&gt;转自：http://hi.baidu.com/squirrel_/blog/item/7c4c083b9b8384e714cecb7f.html&lt;/p&gt;&lt;img src="http://www.cnblogs.com/dupeng0811/aggbug/2383743.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/dupeng0811/archive/2012/03/07/2383743.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
