﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-TimeLord-文章分类-ASP.NET</title><link>http://www.cnitblog.com/libocumt/category/6245.html</link><description>有志者，事竟成，卧薪尝胆，百二秦关终属楚； 苦心人，天不负，破斧沉舟， 三千越甲可吞吴！</description><language>zh-cn</language><lastBuildDate>Sat, 01 Oct 2011 08:36:04 GMT</lastBuildDate><pubDate>Sat, 01 Oct 2011 08:36:04 GMT</pubDate><ttl>60</ttl><item><title>ASP.NET生成静态页面</title><link>http://www.cnitblog.com/libocumt/articles/41108.html</link><dc:creator>TimeLord</dc:creator><author>TimeLord</author><pubDate>Tue, 18 Mar 2008 08:10:00 GMT</pubDate><guid>http://www.cnitblog.com/libocumt/articles/41108.html</guid><description><![CDATA[原理：
<p>　　Main_Execute.aspx是生成HTML的页面。</p>
<p>　　现在用Main.aspx来对它进行缓存.</p>
<p>　　过程如下:</p>
<p>　　首先根据页面参数算出文件名。(这个例子只根据Request.QueryString["id"]来算)</p>
<p>　　尝试读取缓存的文件.如果成功,那么Response.End();</p>
<p>　　如果不成功:</p>
<p>　　使用Server.Execute来调用Main_Execute.aspx,并且获取它的结果内容。</p>
<p>　　得到内容后,立刻输出到客户端。</p>
<p>　　最后把内容写进文件里,提供给下一次做为缓存度取。</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; FONT-FAMILY: Courier; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">Main.Aspx</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">@&nbsp;page&nbsp;language</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">C#</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">@&nbsp;import&nbsp;namespace</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">System.IO&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">runat</span><span style="COLOR: #0000ff">="server"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br>protected&nbsp;override&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">void</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;OnInit&nbsp;(EventArgs&nbsp;e)&nbsp;<br>{&nbsp;<br>　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">int</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;id;&nbsp;<br>　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br>　&nbsp;{&nbsp;<br>　　　&nbsp;id&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">int</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.Parse&nbsp;(Request.QueryString[</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">id</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">]);&nbsp;<br>　&nbsp;}&nbsp;<br>　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br>　&nbsp;{&nbsp;<br>　　　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">throw</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;(</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;Exception&nbsp;(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">页面没有指定id</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">));&nbsp;<br>　&nbsp;}&nbsp;<br>　&nbsp;&nbsp;<br>　&nbsp;string&nbsp;filename</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">Server.MapPath(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">statichtml_</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">id</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.html</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);&nbsp;<br>　&nbsp;&nbsp;<br>　&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">尝试读取已有文件&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">　&nbsp;Stream&nbsp;s&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;GetFileStream&nbsp;(filename);&nbsp;<br>　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;(s&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">!=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">如果文件存在并且读取成功&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">　&nbsp;{&nbsp;<br>　　　&nbsp;using&nbsp;(s)&nbsp;<br>　　　&nbsp;{&nbsp;<br>　　　　　&nbsp;Stream2Stream&nbsp;(s,&nbsp;Response.OutputStream);&nbsp;<br>　　　　　&nbsp;Response.End&nbsp;();&nbsp;<br>　　　&nbsp;}&nbsp;<br>　&nbsp;}&nbsp;<br>　&nbsp;&nbsp;<br>　&nbsp;&nbsp;<br>　&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">调用Main_Execute,并且获取其输出&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">　&nbsp;StringWriter&nbsp;sw&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;StringWriter&nbsp;();&nbsp;<br>　&nbsp;Server.Execute&nbsp;(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">Main_Execute.aspx</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,&nbsp;sw);&nbsp;<br>　&nbsp;&nbsp;<br>　&nbsp;string&nbsp;content&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;sw.ToString&nbsp;();&nbsp;<br>　&nbsp;&nbsp;<br>　&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">输出到客户端&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">　&nbsp;Response.Write(content);&nbsp;<br>　&nbsp;Response.Flush();&nbsp;<br>　&nbsp;&nbsp;<br>　&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">写进文件&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">　&nbsp;&nbsp;<br>　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br>　&nbsp;{&nbsp;<br>　　　&nbsp;using&nbsp;(FileStream&nbsp;fs&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;FileStream&nbsp;(filename,&nbsp;FileMode.Create,&nbsp;FileAccess.Write,&nbsp;FileShare.Write))&nbsp;<br>　　　&nbsp;{&nbsp;<br>　　　　　&nbsp;using&nbsp;(StreamWriter&nbsp;streamwriter&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;StreamWriter&nbsp;(fs,&nbsp;Response.ContentEncoding))&nbsp;<br>　　　　　&nbsp;{&nbsp;<br>　　　　　　　&nbsp;streamwriter.Write&nbsp;(content);&nbsp;<br>　　　　　&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>　&nbsp;}&nbsp;<br>　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">finally</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br>　&nbsp;{&nbsp;<br>　　　&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">Response.End&nbsp;();&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">　&nbsp;}&nbsp;<br>}&nbsp;<br>static&nbsp;public&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">void</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;Stream2Stream&nbsp;(Stream&nbsp;src,&nbsp;Stream&nbsp;dst)&nbsp;<br>{&nbsp;<br>　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">byte</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">[]&nbsp;buf&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">byte</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">[</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">4096</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">];&nbsp;<br>　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">while</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;(</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)&nbsp;<br>　&nbsp;{&nbsp;<br>　　　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">int</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;c&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;src.Read&nbsp;(buf,&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,&nbsp;buf.Length);&nbsp;<br>　　　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(c</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">==</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)&nbsp;<br>　　　　　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;&nbsp;<br>　　　&nbsp;dst.Write&nbsp;(buf,&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,&nbsp;c);&nbsp;<br>　&nbsp;}&nbsp;<br>}&nbsp;<br>public&nbsp;Stream&nbsp;GetFileStream(string&nbsp;filename)&nbsp;<br>{&nbsp;<br>　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br>　&nbsp;{&nbsp;<br>　　　&nbsp;DateTime&nbsp;dt&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;File.GetLastWriteTime&nbsp;(filename);&nbsp;<br>　　　&nbsp;TimeSpan&nbsp;ts</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">dt&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">-</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;DateTime.Now;&nbsp;<br>　　　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(ts.TotalHours</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">1</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)&nbsp;<br>　　　　　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;　　　&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">1小时后过期&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">　　　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;FileStream&nbsp;(filename,&nbsp;FileMode.Open,&nbsp;FileAccess.Read,&nbsp;FileShare.Read);&nbsp;<br>　&nbsp;}&nbsp;<br>　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br>　&nbsp;{&nbsp;<br>　　　&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;&nbsp;<br>　&nbsp;}&nbsp;<br>}&nbsp;<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;</span></div>
<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; FONT-FAMILY: Courier; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">Main_Execute.aspx</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">@&nbsp;page&nbsp;language</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">C#</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">head&nbsp;</span><span style="COLOR: #ff0000">runat</span><span style="COLOR: #0000ff">="server"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br>　&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Untitled&nbsp;Page</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br>ID:&nbsp;<br></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">Request.QueryString[</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">id</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">]</span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;</span></div>
-----------------------------------------------------------------------------------------------------------------------------------------------<br><span id=nsrTitle>HttpServerUtility.Execute 方法 (String, TextWriter)</span> <span id=nsrTitle>HttpServerUtility.Execute 方法<br>
<table class=memberListTable style="WIDTH: 1001px; HEIGHT: 235px" cellSpacing=2 cellPadding=5 width=1001 border=1>
    <tbody>
        <tr>
            <th style="BORDER-RIGHT-STYLE: none" align=left>名称 </th>
            <th style="BORDER-LEFT-STYLE: none" align=left>说明 </th>
        </tr>
        <tr vAlign=top>
            <td style="FONT-SIZE: 12pt">HttpServerUtility.Execute (String) </td>
            <td style="FONT-SIZE: 12pt"><summary xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">在当前请求的上下文中执行指定虚拟路径的处理程序。 </summary></td>
        </tr>
        <tr vAlign=top>
            <td style="FONT-SIZE: 12pt">HttpServerUtility.Execute (String, Boolean) </td>
            <td style="FONT-SIZE: 12pt"><summary xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">在当前请求的上下文中执行指定虚拟路径的处理程序，并指定是否要清除 QueryString 和 Form 集合。 </summary></td>
        </tr>
        <tr vAlign=top>
            <td style="FONT-SIZE: 12pt">HttpServerUtility.Execute (String, TextWriter) </td>
            <td style="FONT-SIZE: 12pt"><summary xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">在当前请求的上下文中执行指定虚拟路径的处理程序。<mshelp:link tabIndex=0 keywords="T:System.IO.TextWriter">TextWriter</mshelp:link> 捕获执行的处理程序的输出。 </summary></td>
        </tr>
        <tr vAlign=top>
            <td style="FONT-SIZE: 12pt">HttpServerUtility.Execute (IHttpHandler, TextWriter, Boolean) </td>
            <td style="FONT-SIZE: 12pt"><summary xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">在当前请求的上下文中执行指定虚拟路径的处理程序。TextWriter 捕获执行的处理程序的输出，布尔参数则指定是否要清除 QueryString 和 Form 集合。 </summary></td>
        </tr>
        <tr vAlign=top>
            <td style="FONT-SIZE: 12pt">HttpServerUtility.Execute (String, TextWriter, Boolean) </td>
            <td style="FONT-SIZE: 12pt"><summary xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">在当前请求的上下文中执行指定虚拟路径的处理程序。TextWriter 捕获页面输出，布尔参数则指定是否要清除 QueryString 和 Form 集合。 </summary></td>
        </tr>
    </tbody>
</table>
<br></span>示例：<br>下面的代码示例在当前目录下执行服务器上的 .aspx 页&#8220;Login.aspx&#8221;，并通过 <mshelp:link tabIndex=0 keywords="T:System.IO.StringWriter">StringWriter</mshelp:link> 对象 <code>writer</code> 接收该页的输出。它将从 <code>writer</code> 接收的 HTML 流写入 HTTP 输出流。<br>StringWriter writer = new StringWriter();<br>Server.Execute("Login.aspx", writer);<br>Response.Write("&lt;H3&gt;Please Login:&lt;/H3&gt;&lt;br&gt;"+ writer.ToString());<br>
<img src ="http://www.cnitblog.com/libocumt/aggbug/41108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/libocumt/" target="_blank">TimeLord</a> 2008-03-18 16:10 <a href="http://www.cnitblog.com/libocumt/articles/41108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库事务</title><link>http://www.cnitblog.com/libocumt/articles/35404.html</link><dc:creator>TimeLord</dc:creator><author>TimeLord</author><pubDate>Fri, 26 Oct 2007 07:52:00 GMT</pubDate><guid>http://www.cnitblog.com/libocumt/articles/35404.html</guid><description><![CDATA[<strong>什么是数据库事务<br><br></strong>　　数据库事务是指作为单个逻辑工作单元执行的一系列操作。<br><br>设想网上购物的一次交易，其付款过程至少包括以下几步数据库操作：<br><br>　　&#183; 更新客户所购商品的库存信息 <br><br>　　&#183; 保存客户付款信息--可能包括与银行系统的交互 <br><br>　　&#183; 生成订单并且保存到数据库中 <br><br>　　&#183; 更新用户相关信息，例如购物数量等等 <br><br>正常的情况下，这些操作将顺利进行，最终交易成功，与交易相关的所有数据库信息也成功地更新。但是，如果在这一系列过程中任何一个环节出了差错，例如在更新商品库存信息时发生异常、该顾客银行帐户存款不足等，都将导致交易失败。一旦交易失败，数据库中所有信息都必须保持交易前的状态不变，比如最后一步更新用户信息时失败而导致交易失败，那么必须保证这笔失败的交易不影响数据库的状态--库存信息没有被更新、用户也没有付款，订单也没有生成。否则，数据库的信息将会一片混乱而不可预测。<br><br>数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。<br><br>　　<strong>数据库事务的ACID属性</strong><br><br>事务处理可以确保除非事务性单元内的所有操作都成功完成，否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元，可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务，必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性：<br><br>　　&#183; <strong>原子性</strong><br><br>事务必须是原子工作单元；对于其数据修改，要么全都执行，要么全都不执行。通常，与某个事务关联的操作具有共同的目标，并且是相互依赖的。如果系统只执行这些操作的一个子集，则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。<br><br>　　&#183; <strong>一致性</strong><br><br>事务在完成时，必须使所有的数据都保持一致状态。在相关数据库中，所有规则都必须应用于事务的修改，以保持所有数据的完整性。事务结束时，所有的内部数据结构（如 B 树索引或双向链表）都必须是正确的。某些维护一致性的责任由应用程序开发人员承担，他们必须确保应用程序已强制所有已知的完整性约束。例如，当开发用于转帐的应用程序时，应避免在转帐过程中任意移动小数点。<br><br>　　&#183; <strong>隔离性</strong><br><br>由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态，要么是另一并发事务修改它之前的状态，要么是另一事务修改它之后的状态，事务不会查看中间状态的数据。这称为可串行性，因为它能够重新装载起始数据，并且重播一系列事务，以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化时将获得最高的隔离级别。在此级别上，从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数，所以一些应用程序降低隔离级别以换取更大的吞吐量。 <br><br>　　&#183; <strong>持久性</strong><br><br>事务完成之后，它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。<br>DBMS的责任和我们的任务<br><br>企业级的数据库管理系统（DBMS）都有责任提供一种保证事务的物理完整性的机制。就常用的SQL Server2000系统而言，它具备锁定设备隔离事务、记录设备保证事务持久性等机制。因此，我们不必关心数据库事务的物理完整性，而应该关注在什么情况下使用数据库事务、事务对性能的影响，如何使用事务等等。<br><br>本文将涉及到在.net框架下使用C#语言操纵数据库事务的各个方面。<br><br>
<p style="FONT-SIZE: 10pt">&nbsp;</p>
　　<strong>体验SQL语言的事务机制</strong><br><br>作为大型的企业级数据库，SQL Server2000对事务提供了很好的支持。我们可以使用SQL语句来定义、提交以及回滚一个事务。<br><br>如下所示的SQL代码定义了一个事务，并且命名为"MyTransaction"（限于篇幅，本文并不讨论如何编写SQL语言程序，请读者自行参考相关书籍）：<br><br>
<table width="90%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">DECLARE @TranName VARCHAR(20)<br><br>SELECT @TranName = 'MyTransaction' <br>BEGIN TRANSACTION @TranNameGOUSE pubs<br>GO<br><br>UPDATE roysched<br>SET royalty = royalty * 1.10<br>WHERE title_id LIKE 'Pc%'<br>GO<br><br>COMMIT TRANSACTION MyTransaction<br>GO</td>
        </tr>
    </tbody>
</table>
<br>这里用到了SQL Server2000自带的示例数据库pubs，提交事务后，将为所有畅销计算机书籍支付的版税增加 10%。<br><br>打开SQL Server2000的查询分析器，选择pubs数据库，然后运行这段程序，结果显而易见。<br><br>可是如何在C#程序中运行呢？我们记得在普通的SQL查询中，一般需要把查询语句赋值给SalCommand.CommandText属性，这里也就像普通的SQL查询语句一样，将这些语句赋给SqlCommand.CommandText属性即可。要注意的一点是，其中的"GO"语句标志着SQL批处理的结束，编写SQL脚本是需要的，但是在这里是不必要的。我们可以编写如下的程序来验证这个想法：<br><br>
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">//TranSql.csusing System;<br>using System.Data;<br>using System.Data.SqlClient;<br>namespace Aspcn<br>{<br>　public class DbTranSql<br>　{<br>　　file://将事务放到SQL Server中执行<br>　　public void DoTran()<br>　　{<br>　　　file://建立连接并打开<br>　　　SqlConnection myConn=GetConn();myConn.Open();<br>　　　SqlCommand myComm=new SqlCommand();<br>　　　try<br>　　　{<br>　　　　myComm.Connection=myConn;<br>　　　　myComm.CommandText="DECLARE @TranName VARCHAR(20) ";<br>　　　　myComm.CommandText+="SELECT @TranName = 'MyTransaction' ";<br>　　　　myComm.CommandText+="BEGIN TRANSACTION @TranName ";<br>　　　　myComm.CommandText+="USE pubs ";<br>　　　　myComm.CommandText+="UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'Pc%' ";<br>　　　　myComm.CommandText+="COMMIT TRANSACTION MyTransaction ";<br>　　　　myComm.ExecuteNonQuery();<br>　　　}<br>　　　catch(Exception err)<br>　　　{<br>　　　　throw new ApplicationException("事务操作出错，系统信息："+err.Message);<br>　　　}<br>　　　finally<br>　　　{<br>　　　　myConn.Close();<br>　　　}<br>　　}<br>　　file://获取数据连接<br>　　private SqlConnection GetConn()<br>　　{<br>　　　string strSql="Data Source=localhost;Integrated Security=SSPI;user id=sa;password=";<br>　　　SqlConnection myConn=new SqlConnection(strSql);<br>　　　return myConn;<br>　　}<br>　}<br><br>　public class Test<br>　{<br>　　public static void Main()<br>　　{<br>　　　DbTranSql tranTest=new DbTranSql();<br>　　　tranTest.DoTran();<br>　　　Console.WriteLine("事务处理已经成功完成。");<br>　　　Console.ReadLine();<br>　　}<br>　}<br>}</td>
        </tr>
    </tbody>
</table>
<br><br>　　注意到其中的SqlCommand对象myComm，它的CommandText属性仅仅是前面SQL代码字符串连接起来即可，当然，其中的"GO"语句已经全部去掉了。这个语句就像普通的查询一样，程序将SQL文本事实上提交给DBMS去处理了，然后接收返回的结果（如果有结果返回的话）。<br><br>很自然，我们最后看到了输出"事务处理已经成功完成"，再用企业管理器查看pubs数据库的roysched表，所有title_id字段以"PC"开头的书籍的royalty字段的值都增加了0.1倍。<br><br>这里，我们并没有使用ADO.net的事务处理机制，而是简单地将执行事务的SQL语句当作普通的查询来执行，因此，事实上该事务完全没有用到.net的相关特性。<br>了解.net中的事务机制<br><br>如你所知，在.net框架中主要有两个命名空间(namespace)用于应用程序同数据库系统的交互：System.Data.SqlClient和System.Data.OleDb。前者专门用于连接Microsoft公司自己的SQL Server数据库，而后者可以适应多种不同的数据库。这两个命名空间中都包含有专门用于管理数据库事务的类，分别是System.Data.SqlClient.SqlTranscation类和System.Data.OleDb.OleDbTranscation类。<br><br>就像它们的名字一样，这两个类大部分功能是一样的，二者之间的主要差别在于它们的连接机制，前者提供一组直接调用 SQL Server 的对象，而后者使用本机 OLE DB 启用数据访问。 事实上，ADO.net 事务完全在数据库的内部处理，且不受 Microsoft 分布式事务处理协调器 (DTC) 或任何其他事务性机制的支持。本文将主要介绍System.Data.SqlClient.SqlTranscation类，下面的段落中，除了特别注明，都将使用System.Data.SqlClient.SqlTranscation类。 <br><br>
<p style="FONT-SIZE: 10pt">&nbsp;</p>
　　<strong>事务的开启和提交</strong><br><br>现在我们对事务的概念和原理都了然于心了，并且作为已经有一些基础的C#开发者，我们已经熟知编写数据库交互程序的一些要点，即使用SqlConnection类的对象的Open()方法建立与数据库服务器的连接，然后将该连接赋给SqlCommand对象的Connection属性，将欲执行的SQL语句赋给它的CommandText属性，于是就可以通过SqlCommand对象进行数据库操作了。对于我们将要编写的事务处理程序，当然还需要定义一个SqlTransaction类型的对象。并且看到SqlCommand对象的Transcation属性，我们很容易想到新建的SqlTransaction对象应该与它关联起来。<br><br>基于以上认识，下面我们就开始动手写我们的第一个事务处理程序。我们可以很熟练地写出下面这一段程序：<br><br>
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">//DoTran.csusing System;<br>using System.Data;<br>using System.Data.SqlClient;<br>namespace Aspcn<br>{<br>　public class DbTran<br>　{<br>　　file://执行事务处理<br>　　public void DoTran()<br>　　{<br>　　　file://建立连接并打开<br>　　　SqlConnection myConn=GetConn();<br>　　　myConn.Open();<br>　　　SqlCommand myComm=new SqlCommand();<br>　　　SqlTransaction myTran=new SqlTransaction();<br>　　　try<br>　　　{<br>　　　 myComm.Connection=myConn;<br>　　　 myComm.Transaction=myTran;<br>　　　<br>　　　　file://定位到pubs数据库　<br>　　　　myComm.CommandText="USE pubs";<br>　　　　myComm.ExecuteNonQuery();<br><br>　　　　file://更新数据<br>　　　　file://将所有的计算机类图书<br>　　　　myComm.CommandText="UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'Pc%'";<br>　　　　myComm.ExecuteNonQuery();//提交事务<br>　　　　myTran.Commit();<br>　　　}<br>　　　catch(Exception err)<br>　　　{<br>　　　　throw new ApplicationException("事务操作出错，系统信息："+err.Message);<br>　　　}<br>　　　finally<br>　　　{<br>　　　　myConn.Close();<br>　　　}<br>　　}<br>　　file://获取数据连接<br>　　private SqlConnection GetConn()<br>　　{<br>　　　string strSql="Data Source=localhost;Integrated Security=SSPI;user id=sa;password=";<br>　　　SqlConnection myConn=new SqlConnection(strSql);<br>　　　return myConn;<br>　　}<br>　}<br><br>　public class Test{public static void Main()<br>　{<br>　　DbTran tranTest=new DbTran();<br>　　tranTest.DoTran();<br>　　Console.WriteLine("事务处理已经成功完成。");<br>　　Console.ReadLine();<br>　}<br>}<br>}</td>
        </tr>
    </tbody>
</table>
<br>显然，这个程序非常简单，我们非常自信地编译它，但是，出乎意料的结果使我们的成就感顿时烟消云散：<br><br>error CS1501: 重载"SqlTransaction"方法未获取"0"参数<br><br>是什么原因呢？注意到我们初始化的代码：<br><br>
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">SqlTransaction myTran=new SqlTransaction();</td>
        </tr>
    </tbody>
</table>
<br>显然，问题出在这里，事实上，SqlTransaction类并没有公共的构造函数，我们不能这样新建一个SqlTrancaction类型的变量。在事务处理之前确实需要有一个SqlTransaction类型的变量，将该变量关联到SqlCommand类的Transcation属性也是必要的，但是初始化方法却比较特别一点。在初始化SqlTransaction类时，你需要使用SqlConnection类的BeginTranscation()方法：<br><br>
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">SqlTransaction myTran; myTran=myConn.BeginTransaction();</td>
        </tr>
    </tbody>
</table>
　　<br>该方法返回一个SqlTransaction类型的变量。在调用BeginTransaction()方法以后，所有基于该数据连接对象的SQL语句执行动作都将被认为是事务MyTran的一部分。同时，你也可以在该方法的参数中指定事务隔离级别和事务名称，如：<br><br>
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">SqlTransaction myTran; <br>myTran=myConn.BeginTransaction(IsolationLevel.ReadCommitted,"SampleTransaction"); </td>
        </tr>
    </tbody>
</table>
　　<br>关于隔离级别的概念我们将在随后的内容中探讨，在这里我们只需牢记一个事务是如何被启动，并且关联到特定的数据链接的。<br><br>先不要急着去搞懂我们的事务都干了些什么，看到这一行：<br><br>
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">myTran.Commit();</td>
        </tr>
    </tbody>
</table>
<br>是的，这就是事务的提交方式。该语句执行后，事务的所有数据库操作将生效，并且为数据库事务的持久性机制所保持--即使系统在这以后发生致命错误，该事务对数据库的影响也不会消失。<br><br>对上面的程序做了修改之后我们可以得到如下代码（为了节约篇幅，重复之处已省略，请参照前文）：<br><br>
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">//DoTran.cs&#8230;&#8230;｝<br><br>file://执行事务处理<br>public void DoTran()<br>{<br>　file://建立连接并打开<br>　SqlConnection myConn=GetConn();<br>　myConn.Open();<br>　SqlCommand myComm=new SqlCommand();<br><br>　file://SqlTransaction myTran=new SqlTransaction();<br>　file://注意，SqlTransaction类无公开的构造函数<br><br>　SqlTransaction myTran;<br><br>　file://创建一个事务<br>　myTran=myConn.BeginTransaction();<br>　try<br>　{<br>　　file://从此开始，基于该连接的数据操作都被认为是事务的一部分<br>　　file://下面绑定连接和事务对象<br>　　myComm.Connection=myConn;<br>　　myComm.Transaction=myTran; file://定位到pubs数据库<br>　　myComm.CommandText="USE pubs";<br>　　myComm.ExecuteNonQuery();//更新数据<br>　　file://将所有的计算机类图书<br>　　myComm.CommandText="UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'Pc%'";<br>　　myComm.ExecuteNonQuery();<br>　<br>　　file://提交事务<br>　　myTran.Commit();<br>　}<br>　catch(Exception err)<br>　{<br>　　throw new ApplicationException("事务操作出错，系统信息："+err.Message);<br>　 }<br>　finally<br>　{<br>　　myConn.Close();<br>　 }<br>}<br>&#8230;&#8230;</td>
        </tr>
    </tbody>
</table>
<p style="FONT-SIZE: 10pt"><br>到此为止，我们仅仅掌握了如何开始和提交事务。下一步我们必须考虑的是在事务中可以干什么和不可以干什么。</p>
<p style="FONT-SIZE: 10pt">　<strong>另一个走向极端的错误 </strong><br><br>满怀信心的新手们可能为自己所掌握的部分知识陶醉不已，刚接触数据库库事务处理的准开发者们也一样，踌躇满志地准备将事务机制应用到他的数据处理程序的每一个模块每一条语句中去。的确，事务机制看起来是如此的诱人——简洁、美妙而又实用，我当然想用它来避免一切可能出现的错误——我甚至想用事务把我的数据操作从头到尾包裹起来。<br><br>看着吧，下面我要从创建一个数据库开始：<br><br>
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">using System;<br>using System.Data;<br>using System.Data.SqlClient;<br><br>namespace Aspcn<br>{<br>　public class DbTran<br>　{<br>　　file://执行事务处理<br>　　public void DoTran()<br>　　{ <br>　　　file://建立连接并打开<br>　　　SqlConnection myConn=GetConn();<br>　　　myConn.Open();<br><br>　　　SqlCommand myComm=new SqlCommand();<br>　　　SqlTransaction myTran;<br><br>　　　myTran=myConn.BeginTransaction();<br><br>　　　file://下面绑定连接和事务对象<br>　　　myComm.Connection=myConn;<br>　　　myComm.Transaction=myTran;<br><br>　　　file://试图创建数据库TestDB<br>　　　myComm.CommandText="CREATE database TestDB";<br>　　　myComm.ExecuteNonQuery();<br><br>　　　file://提交事务<br>　　　myTran.Commit();<br>　　}<br><br>　　file://获取数据连接<br>　　private SqlConnection GetConn()<br>　　{<br>　　　string strSql="Data Source=localhost;Integrated Security=SSPI;user id=sa;password=";<br>　　　SqlConnection myConn=new SqlConnection(strSql);<br>　　　return myConn;<br>　　}<br>　}<br><br>　public class Test<br>　{<br>　　public static void Main()<br>　　{<br>　　　DbTran tranTest=new DbTran();<br>　　　tranTest.DoTran();<br>　　　Console.WriteLine("事务处理已经成功完成。");<br>　　　Console.ReadLine();<br>　　}<br>　}<br>} <br><br>//---------------</td>
        </tr>
    </tbody>
</table>
</p>
<p style="FONT-SIZE: 10pt">　　未处理的异常： System.Data.SqlClient.SqlException: 在多语句事务内不允许使用 CREATE DATABASE 语句。<br></p>
<p style="FONT-SIZE: 10pt">
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()<br>at Aspcn.DbTran.DoTran()<br>at Aspcn.Test.Main()</td>
        </tr>
    </tbody>
</table>
</p>
<p style="FONT-SIZE: 10pt">注意，如下的SQL语句不允许出现在事务中：<br></p>
<p style="FONT-SIZE: 10pt">
<table cellSpacing=0 width=600 align=center border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>ALTER DATABASE</td>
            <td style="FONT-SIZE: 10pt" width=438>修改数据库 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>BACKUP LOG</td>
            <td style="FONT-SIZE: 10pt" width=438>备份日志 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>CREATE DATABASE</td>
            <td style="FONT-SIZE: 10pt" width=438>创建数据库 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>DISK INIT</td>
            <td style="FONT-SIZE: 10pt" width=438>创建数据库或事务日志设备 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>DROP DATABASE</td>
            <td style="FONT-SIZE: 10pt" width=438>删除数据库 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>DUMP TRANSACTION</td>
            <td style="FONT-SIZE: 10pt" width=438>转储事务日志 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>LOAD DATABASE</td>
            <td style="FONT-SIZE: 10pt" width=438>装载数据库备份复本</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>LOAD TRANSACTION</td>
            <td style="FONT-SIZE: 10pt" width=438>装载事务日志备份复本 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>RECONFIGURE </td>
            <td style="FONT-SIZE: 10pt" width=438>更新使用 sp_configure 系统存储过程更改的配置选项的当前配置（sp_configure 结果集中的 config_value 列）值。</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>RESTORE DATABASE</td>
            <td style="FONT-SIZE: 10pt" width=438>还原使用BACKUP命令所作的数据库备份 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>RESTORE LOG</td>
            <td style="FONT-SIZE: 10pt" width=438>还原使用BACKUP命令所作的日志备份 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt" width=152>UPDATE STATISTICS</td>
            <td style="FONT-SIZE: 10pt" width=438>在指定的表或索引视图中，对一个或多个统计组（集合）有关键值分发的信息进行更新 </td>
        </tr>
    </tbody>
</table>
</p>
<p style="FONT-SIZE: 10pt">除了这些语句以外，你可以在你的数据库事务中使用任何合法的SQL语句。<br><br></p>
<p style="FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-SIZE: 10pt">　　<strong>事务回滚</strong><br><br>事务的四个特性之一是原子性，其含义是指对于特定操作序列组成的事务，要么全部完成，要么就一件也不做。如果在事务处理的过程中，发生未知的不可预料的错误，如何保证事务的原子性呢？当事务中止时，必须执行回滚操作，以便消除已经执行的操作对数据库的影响。<br><br>一般的情况下，在异常处理中使用回滚动作是比较好的想法。前面，我们已经得到了一个更新数据库的程序，并且验证了它的正确性，稍微修改一下，可以得到：<br></p>
<p style="FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-SIZE: 10pt">
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">//RollBack.cs<br>using System;<br>using System.Data;<br>using System.Data.SqlClient;<br><br>namespace Aspcn<br>{<br>　public class DbTran<br>　{<br>　　file://执行事务处理<br>　　public void DoTran()<br>　　{ <br>　　　file://建立连接并打开<br>　　　SqlConnection myConn=GetConn();<br>　　　myConn.Open();<br><br>　　　SqlCommand myComm=new SqlCommand();<br>　　　SqlTransaction myTran;<br><br>　　　file://创建一个事务<br>　　　myTran=myConn.BeginTransaction();<br>　　　file://从此开始，基于该连接的数据操作都被认为是事务的一部分<br>　　　file://下面绑定连接和事务对象<br>　　　myComm.Connection=myConn;<br>　　　myComm.Transaction=myTran;<br><br>　　　try<br>　　　{<br>　　　　file://定位到pubs数据库<br>　　　　myComm.CommandText="USE pubs";<br>　　　　myComm.ExecuteNonQuery();<br>　　　<br>　　　　myComm.CommandText="UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'Pc%'";<br>　　　　myComm.ExecuteNonQuery();<br><br>　　　　file://下面使用创建数据库的语句制造一个错误<br>　　　　myComm.CommandText="Create database testdb";<br>　　　　myComm.ExecuteNonQuery();<br><br>　　　　myComm.CommandText="UPDATE roysched SET royalty = royalty * 1.20 WHERE title_id LIKE 'Ps%'";<br>　　　　myComm.ExecuteNonQuery();<br><br>　　　　file://提交事务<br>　　　　myTran.Commit();<br>　　　}<br>　　　catch(Exception err)<br>　　　{<br>　　　　myTran.Rollback();<br>　　　　Console.Write("事务操作出错，已回滚。系统信息："+err.Message);<br>　　　}<br>　　}<br><br>　　file://获取数据连接<br>　　private SqlConnection GetConn()<br>　　{<br>　　　string strSql="Data Source=localhost;Integrated Security=SSPI;user id=sa;password=";<br>　　　SqlConnection myConn=new SqlConnection(strSql);<br>　　　return myConn;<br>　　}<br>　}<br>　public class Test<br>　{<br>　　public static void Main()<br>　　{<br>　　　DbTran tranTest=new DbTran();<br>　　　tranTest.DoTran();<br>　　　Console.WriteLine("事务处理已经成功完成。");<br>　　　Console.ReadLine();<br>　　}<br>　}<br>}</td>
        </tr>
    </tbody>
</table>
</p>
<p style="FONT-SIZE: 10pt">首先，我们在中间人为地制造了一个错误——使用前面讲过的Create database语句。然后，在异常处理的catch块中有如下语句：<br><br>myTran.Rollback();<br><br>当异常发生时，程序执行流跳转到catch块中，首先执行的就是这条语句，它将当前事务回滚。在这段程序可以看出，在Create database之前，已经有了一个更新数据库的操作——将pubs数据库的roysched表中的所有title_id字段以&#8220;PC&#8221;开头的书籍的royalty字段的值都增加0.1倍。但是，由于异常发生而导致的回滚使得对于数据库来说什么都没有发生。由此可见，Rollback()方法维护了数据库的一致性及事务的原子性。<br><br></p>
<p style="FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-SIZE: 10pt">　　<strong>使用存储点</strong><br><br>事务只是一种最坏情况下的保障措施，事实上，平时系统的运行可靠性都是相当高的，错误很少发生，因此，在每次事务执行之前都检查其有效性显得代价太高——绝大多数的情况下这种耗时的检查是不必要的。我们不得不想另外一种办法来提高效率。<br><br>事务存储点提供了一种机制，用于回滚部分事务。因此，我们可以不必在更新之前检查更新的有效性，而是预设一个存储点，在更新之后，如果没有出现错误，就继续执行，否则回滚到更新之前的存储点。存储点的作用就在于此。要注意的是，更新和回滚代价很大，只有在遇到错误的可能性很小，而且预先检查更新的有效性的代价相对很高的情况下，使用存储点才会非常有效。<br><br>使用.net框架编程时，你可以非常简单地定义事务存储点和回滚到特定的存储点。下面的语句定义了一个存储点&#8220;NoUpdate&#8221;：<br><br>myTran.Save("NoUpdate");<br><br>当你在程序中创建同名的存储点时，新创建的存储点将替代原有的存储点。<br><br>在回滚事务时，只需使用Rollback()方法的一个重载函数即可：<br><br>　　myTran.Rollback("NoUpdate");<br><br>下面这段程序说明了回滚到存储点的方法和时机：<br></p>
<p style="FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-SIZE: 10pt">
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">using System;<br>using System.Data;<br>using System.Data.SqlClient;<br><br>namespace Aspcn<br>{<br>　public class DbTran<br>　{　<br>　　file://执行事务处理<br>　　public void DoTran()<br>　　{ <br>　　　file://建立连接并打开<br>　　　SqlConnection myConn=GetConn();<br>　　　myConn.Open();<br><br>　　　SqlCommand myComm=new SqlCommand();<br>　　　SqlTransaction myTran;<br><br>　　　file://创建一个事务<br>　　　myTran=myConn.BeginTransaction();<br>　　　file://从此开始，基于该连接的数据操作都被认为是事务的一部分<br>　　　file://下面绑定连接和事务对象<br>　　　myComm.Connection=myConn;<br>　　　myComm.Transaction=myTran;<br><br>　　　try<br>　　　{<br>　　　　myComm.CommandText="use pubs";<br>　　　　myComm.ExecuteNonQuery();<br><br>　　　　myTran.Save("NoUpdate");<br><br>　　　　myComm.CommandText="UPDATE roysched SET royalty = royalty * 1.10 WHERE title_id LIKE 'Pc%'";<br>　　　　myComm.ExecuteNonQuery();<br><br>　　　　file://提交事务<br>　　　　myTran.Commit();<br>　　　}<br>　　　catch(Exception err)<br>　　　{<br>　　　　file://更新错误，回滚到指定存储点<br>　　　　myTran.Rollback("NoUpdate");<br>　　　　throw new ApplicationException("事务操作出错，系统信息："+err.Message);<br>　　　}<br>　　}<br><br>　　file://获取数据连接<br>　　private SqlConnection GetConn()<br>　　{<br>　　　string strSql="Data Source=localhost;Integrated Security=SSPI;user id=sa;password=";<br>　　　SqlConnection myConn=new SqlConnection(strSql);<br>　　　return myConn;<br>　　}<br>　}<br>　public class Test<br>　{<br>　　public static void Main()<br>　　{<br>　　　DbTran tranTest=new DbTran();<br>　　　tranTest.DoTran();<br>　　　Console.WriteLine("事务处理已经成功完成。");<br>　　　Console.ReadLine();<br>　　}<br>　}<br>}<br></td>
        </tr>
    </tbody>
</table>
</p>
<p style="FONT-SIZE: 10pt">很明显，在这个程序中，更新无效的几率是非常小的，而且在更新前验证其有效性的代价相当高，因此我们无须在更新之前验证其有效性，而是结合事务的存储点机制，提供了数据完整性的保证。<br><br></p>
<p style="FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-SIZE: 10pt">　　<strong>隔离级别的概念</strong><br><br>企业级的数据库每一秒钟都可能应付成千上万的并发访问，因而带来了并发控制的问题。由数据库理论可知，由于并发访问，在不可预料的时刻可能引发如下几个可以预料的问题：<br><br>　　<strong>脏读</strong>：包含未提交数据的读取。例如，事务1 更改了某行。事务2 在事务1 提交更改之前读取已更改的行。如果事务1 回滚更改，则事务2 便读取了逻辑上从未存在过的行。<br><br>　　<strong>不可重复读取</strong>：当某个事务不止一次读取同一行，并且一个单独的事务在两次（或多次）读取之间修改该行时，因为在同一个事务内的多次读取之间修改了该行，所以每次读取都生成不同值，从而引发不一致问题。<br><br>　　<strong>幻象</strong>：通过一个任务，在以前由另一个尚未提交其事务的任务读取的行的范围中插入新行或删除现有行。带有未提交事务的任务由于该范围中行数的更改而无法重复其原始读取。 <br><br>如你所想，这些情况发生的根本原因都是因为在并发访问的时候，没有一个机制避免交叉存取所造成的。而隔离级别的设置，正是为了避免这些情况的发生。事务准备接受不一致数据的级别称为隔离级别。隔离级别是一个事务必须与其它事务进行隔离的程度。较低的隔离级别可以增加并发，但代价是降低数据的正确性。相反，较高的隔离级别可以确保数据的正确性，但可能对并发产生负面影响。<br><br>根据隔离级别的不同，DBMS为并行访问提供不同的互斥保证。在SQL Server数据库中，提供四种隔离级别：未提交读、提交读、可重复读、可串行读。这四种隔离级别可以不同程度地保证并发的数据完整性：<br></p>
<p style="FONT-SIZE: 10pt">&nbsp;</p>
<p style="FONT-SIZE: 10pt">
<table cellSpacing=0 width=600 align=center border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">隔离级别</td>
            <td style="FONT-SIZE: 10pt">脏 读</td>
            <td style="FONT-SIZE: 10pt">不可重复读取</td>
            <td style="FONT-SIZE: 10pt">幻 像</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt">未提交读</td>
            <td style="FONT-SIZE: 10pt">是</td>
            <td style="FONT-SIZE: 10pt">是</td>
            <td style="FONT-SIZE: 10pt">是 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt">提交读 </td>
            <td style="FONT-SIZE: 10pt">否 </td>
            <td style="FONT-SIZE: 10pt">是 </td>
            <td style="FONT-SIZE: 10pt">是 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt">可重复读</td>
            <td style="FONT-SIZE: 10pt">否</td>
            <td style="FONT-SIZE: 10pt">否</td>
            <td style="FONT-SIZE: 10pt">是 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt">可串行读 </td>
            <td style="FONT-SIZE: 10pt">否 </td>
            <td style="FONT-SIZE: 10pt">否 </td>
            <td style="FONT-SIZE: 10pt">否 </td>
        </tr>
    </tbody>
</table>
</p>
<p style="FONT-SIZE: 10pt">可以看出，&#8220;可串行读&#8221;提供了最高级别的隔离，这时并发事务的执行结果将与串行执行的完全一致。如前所述，最高级别的隔离也就意味着最低程度的并发，因此，在此隔离级别下，数据库的服务效率事实上是比较低的。尽管可串行性对于事务确保数据库中的数据在所有时间内的正确性相当重要，然而许多事务并不总是要求完全的隔离。例如，多个作者工作于同一本书的不同章节。新章节可以在任意时候提交到项目中。但是，对于已经编辑过的章节，没有编辑人员的批准，作者不能对此章节进行任何更改。这样，尽管有未编辑的新章节，但编辑人员仍可以确保在任意时间该书籍项目的正确性。编辑人员可以查看以前编辑的章节以及最近提交的章节。这样，其它的几种隔离级别也有其存在的意义。<br><br>在.net框架中，事务的隔离级别是由枚举System.Data.IsolationLevel所定义的： <br></p>
<p style="FONT-SIZE: 10pt">
<table width="100%" bgColor=#ffffff>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">[Flags]<br>[Serializable]<br>public enum IsolationLevel </td>
        </tr>
    </tbody>
</table>
</p>
<p style="FONT-SIZE: 10pt">其成员及相应的含义如下：<br></p>
<p style="FONT-SIZE: 10pt">
<table cellSpacing=0 width="100%" border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 10pt">成 员</td>
            <td style="FONT-SIZE: 10pt">含 义 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt">Chaos</td>
            <td style="FONT-SIZE: 10pt">无法改写隔离级别更高的事务中的挂起的更改。</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt">ReadCommitted</td>
            <td style="FONT-SIZE: 10pt">在正在读取数据时保持共享锁，以避免脏读，但是在事务结束之前可以更改数据，从而导致不可重复的读取或幻像数据。</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt">ReadUncommitted</td>
            <td style="FONT-SIZE: 10pt">可以进行脏读，意思是说，不发布共享锁，也不接受独占锁。 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt">RepeatableRead</td>
            <td style="FONT-SIZE: 10pt">在查询中使用的所有数据上放置锁，以防止其他用户更新这些数据。防止不可重复的读取，但是仍可以有幻像行。 </td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt">Serializable</td>
            <td style="FONT-SIZE: 10pt">在DataSet上放置范围锁，以防止在事务完成之前由其他用户更新行或向数据集中插入行。</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 10pt">Unspecified </td>
            <td style="FONT-SIZE: 10pt">正在使用与指定隔离级别不同的隔离级别，但是无法确定该级别。 <br></td>
        </tr>
    </tbody>
</table>
</p>
<p style="FONT-SIZE: 10pt">显而意见，数据库的四个隔离级别在这里都有映射。<br><br>默认的情况下，SQL Server使用ReadCommitted(提交读)隔离级别。<br><br>关于隔离级别的最后一点就是如果你在事务执行的过程中改变了隔离级别，那么后面的命名都在最新的隔离级别下执行——隔离级别的改变是立即生效的。有了这一点，你可以在你的事务中更灵活地使用隔离级别从而达到更高的效率和并发安全性。<br><br>　　<strong>忠告</strong><br><br>无疑，引入事务处理是应对可能出现的数据错误的好方法，但是也应该看到事务处理需要付出的巨大代价——用于存储点、回滚和并发控制所需要的CPU时间和存储空间。</p>
<img src ="http://www.cnitblog.com/libocumt/aggbug/35404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/libocumt/" target="_blank">TimeLord</a> 2007-10-26 15:52 <a href="http://www.cnitblog.com/libocumt/articles/35404.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.NET页面生存周期详解</title><link>http://www.cnitblog.com/libocumt/articles/34889.html</link><dc:creator>TimeLord</dc:creator><author>TimeLord</author><pubDate>Mon, 15 Oct 2007 09:22:00 GMT</pubDate><guid>http://www.cnitblog.com/libocumt/articles/34889.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当一个页面请求发送到WEB服务器时，不论该事件是由页面提交还是由页面重定向而激发的，页面在其被创建到释放的过程中都会运行一系列的事件。一个ASP.NET页面从悲怆见到释放的过程包含10个事件。<br><br>　　（1）对象初始化Init事件：页面初始化的标志是Init事件。页面中的控件（包括页面本身）都是在它们最初的Form中被首次初始化的。在成功创建页面的控件树后，对应用程序激发这个事件。当Init事件发生时，在.aspx源文件中静态声明的所有控件都以实例化并取其默认值。应该注意到，这是还没有视图状态信息可供使用。虽然可以重载OnInit方法，但是系统并不保证这些控件实例是按照怎样的顺序被创建的。<br><br>　　（2）加载视图：在初始化之后，页面框架立即加载该页面的视图状态（ViewState）。所谓视图状态就是一些名称/值对的集合，例如可以保存TextBox控件的ID和Text属性值。它一般被用于在一个往返行程中存留信息到服务器，即参与HTTP请求与响应。<br><br>　　页面视图状态被存储在＜input type=&#8221;hidden&#8221;＞字段中，做为_VIEWSTAE的值进行记录。该视图状态通过ASP.NE自动维护。通过重写LoadViewState方法组件，开发人员可控制如何还原视图状态以及如何将其内容影射到内部状态。LoadViewState方法就是从ViewState中获取上一次的状态，并按照页面的控件树的结构，用递归来遍历整个树，将对应的状态恢复到每一个控件上。<br><br>　　（3）处理回发数据：还原了视图状态，页面树种的各个控件的状态就与浏览器上次呈现该页面时这些控件所处的状态相同。下一步需要更新这些控件的状态以发送给客户端。<br><br>　　回发数据处理阶段是各个控件有机会更新其状态，以便准确的反映相应的HTML元素在客户端的状态。例如，一个服务器TextBox控件对应的HTML元素是＜input type=text＞，在回发数据阶段，TextBox控件将检索＜input＞标记的当前值并用它刷新其内部状态。每个控件负责从以发送的数据中提取相应值，并更新其某些属性。TextBox控件将更新Text属性，而CheckBox控件将刷新其Checked属性。服务器控件和HTML元素之间的匹配关系由二者的ID确定。<br><br>　　页框架将在每个提交数据的控件上实现IpostBackDataHandler接口，然后激发LoadPostData事件，通过页面解析发现实现了IpostBackDataHandle接口的控件，这样就能正确的回传数据更新控件状态。在识别控件时，ASP.NET通过匹配控件的唯一标示符来更新正确的控件，该标识符具有名称值集和中的名称值对。这也就是在所有特定的页中每个控件都需要一个唯一标识符的原因之一。其他的步骤都由框架来完成，例如确定每个标识符在环境中是否唯一以及控件的基本属性等。<br><br>LostPostData方法的原型如下：<br>Public virtual bool LoadPostData(string postDatakey, NameValueCollection postCollection)<br><br>　　PostDataKey是标识控件的关键字，可以理解为控件的ID,postCollection是包含回发数据的集合，可以理解为视图状态值。该方法返回一个bool值，如果是true，则表示控件状态因回发而更改；否则返回false。页框架会更跟踪所有返回true的控件并在这些控件上调用RaisePostDataChangeEvent事件。<br><br>　　LoadPostData方法是由System..Web.WebControls.Control定义的，而添加的每一个服务器控件也是从System..Web.WebControls.Control继承的，所以对于数据的回发处理并不需要干预。<br><br>　　（4）加载页面Load：在回发数据处理阶段结束时，页面中的所有控件都根据客户端上所输入的更改来更新的状态。此时，对页面激发OnLoad事件。对于这个事件，相信大多数朋友都会比较熟悉，用Visual Studio.Net生成的页面中的Page_Load方法就是响应Load事件的方法，对于每一次请求，Load事件都会触发，Page_Load方法也就会执行。可以利用该方法执行一些页面初始化，例如准备好数据库的连接字符串。在事件引用中，为了提高性能，通常使用Page类的IsPostBack属性判断是不是数据回发。<br><br>　　（5）回发更改通知RaisePostDataChanged：如（3）所述，在所有实现了IpostBackDataHandler接口的控件被正确的回传数据更新后，每个控件都有一个布尔值的标识，标识其自上一次提交后改控件的数据是被更改还是保持其值。然后ASP.NET通过搜索页来寻找任何显示控件数据被更改的标识并激发RaisePostDataChanged。RaisePostDataChanged事件直到Load事件发生后，所有控件被更新后才激发。这保证了在控件被回传数据更新前，其他控件的数据在RaisePostDataChanged事件中没有被手动更改过。虽然也可以在Page的基础上自己定义数据更改的事件，但通常这个事件由太大用处。<br><br>　　（6）处理回发事件RaisePostBackEvent：当回传更新导致数据改变而引发服务器端事件后，引发回传的对象会在RaisePostBackEvent事件中被处理。这种引发回传的对象往往是一个按钮被单击或者其状态改变而引发回传的控件。例如Button触发乐Onclick事件、客户端修改了某个文本框的文本、同时将AutoPostBack设置为true、触发TextChanged事件等。<br><br>　　很多代码都在这个事件中执行，因为这是控制事件驱动逻辑的理想位置。为了保证呈现到浏览器的数据的正确性，在一系列的回传事件后，RaisePostBackEvent事件最终被激发。基于一致性考虑，会传中改变的控件直到这个函数被执行后才被更新。在实际的ASP.NET开发工作中要做的工作就是在此事件发生前处理代码。<br><br>　　（7） 预呈现PreRender：在处理回发事件后，页面就准备进行呈现。这一阶段的标志是PreRender事件。各个控件可利用这个很好的时机，以便执行任何需要在保存视图状态和呈现输出结果的前一刻完成得最后一些更新操作。最终请求的处理都会转变为发挥服务器的响应，预呈现这个阶段就是执行在最终呈现之前所做的状态的更改，因为在呈现一个控件之前，必须更具它的属性来产生HTML,比如Style属性。这是典型的例子，这预呈现之前，可以更改一个控件的Style，当执行预呈现时，就可以把Style保存下来，做为呈现阶段显示HTML的样式信息。<br><br>　　（8）保存状态SaveViewState：下一个状态为SaveViewState，在这一状态中所有控件以及页面本身可以刷新自己的SaveState集合的内容。所得到的视图状态随后得以序列化、进行哈希运算、进行Base64编码并关联到VI-EMSTATE隐藏自端。<br><br>　　（9）呈现视图Render：到这里，实际上页面对请求的处理基本就告一段落了，在Render事件中，也调用对象是它们呈现为HTML，然后也收集HTML发送给客户。客户接收到HTML标记后进行重组，最终显示给客户。当Render事件被重载时，开发者可以为浏览器创建定值的HTML，此时页面创建的任何HTML都还没有生效。Render方法用HtmlTextWriter对象做参数并由它产生HTML送给浏览器。这主要用于自定义控件的开发。<br><br>　　（10）处置Disposed：执行销毁控件前的所有最终清理操作。在此阶段必须释放对昂贵资源的引用，如内存的退出、数据库的连接等。<br><br>　　（11）卸载Unload：一个页面的最后生存标志就是Unload事件，该事件在页面对象被解除之前发生。在此事件中，可以调用Dispose方法尽可能释放占用的任何关键资源（例如，文件、图形对象以及数据库连接）。 
<img src ="http://www.cnitblog.com/libocumt/aggbug/34889.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/libocumt/" target="_blank">TimeLord</a> 2007-10-15 17:22 <a href="http://www.cnitblog.com/libocumt/articles/34889.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从底层了解ASP.NET体系结构 </title><link>http://www.cnitblog.com/libocumt/articles/34484.html</link><dc:creator>TimeLord</dc:creator><author>TimeLord</author><pubDate>Sun, 07 Oct 2007 13:22:00 GMT</pubDate><guid>http://www.cnitblog.com/libocumt/articles/34484.html</guid><description><![CDATA[<a href="http://www.cnblogs.com/rijing2004/archive/2007/09/14/howaspnetwork.html">http://www.cnblogs.com/rijing2004/archive/2007/09/14/howaspnetwork.html</a>
<img src ="http://www.cnitblog.com/libocumt/aggbug/34484.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/libocumt/" target="_blank">TimeLord</a> 2007-10-07 21:22 <a href="http://www.cnitblog.com/libocumt/articles/34484.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#封装一些常用的JS调用</title><link>http://www.cnitblog.com/libocumt/articles/34480.html</link><dc:creator>TimeLord</dc:creator><author>TimeLord</author><pubDate>Sun, 07 Oct 2007 10:25:00 GMT</pubDate><guid>http://www.cnitblog.com/libocumt/articles/34480.html</guid><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; FONT-FAMILY: Courier; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;System;<br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;System.Web;<br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;System.Web.UI;<br><br></span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;YYAYQ.COMP<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**/</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;一些常用的Js调用<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;创建时间：2006-8-3<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;创建者：马先光<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Jscript<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**/</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;弹出JavaScript小窗口<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="js"&gt;</span><span style="COLOR: #008000">窗口信息</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Alert(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;message)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;js&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">&lt;Script&nbsp;language='JavaScript'&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert('</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;message&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">');&lt;/Script&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(js);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**/</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;弹出消息框并且转向到新的URL<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="message"&gt;</span><span style="COLOR: #008000">消息内容</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="toURL"&gt;</span><span style="COLOR: #008000">连接地址</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;AlertAndRedirect(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;message,&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;toURL)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;js&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;script&nbsp;language=javascript&gt;alert('{0}');window.location.replace('{1}')&lt;/script&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.Format(js,&nbsp;message,&nbsp;toURL));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**/</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;回到历史页面<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="value"&gt;</span><span style="COLOR: #008000">-1/1</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;GoHistory(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;value)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;js&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">&lt;Script&nbsp;language='JavaScript'&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;history.go({0});&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Script&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.Format(js,&nbsp;value));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**/</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;关闭当前窗口<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;CloseWindow()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;js&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">&lt;Script&nbsp;language='JavaScript'&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent.opener=null;window.close();&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Script&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(js);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.End();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**/</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;刷新父窗口<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;RefreshParent(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;url)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;js&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">&lt;script&gt;try{top.location=""</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">url</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">""}catch(e){location=""</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">url</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">""}&lt;/script&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(js);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**/</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;刷新打开窗口<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;RefreshOpener()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;js&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">&lt;Script&nbsp;language='JavaScript'&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opener.location.reload();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Script&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(js);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**/</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;打开指定大小的新窗体<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="url"&gt;</span><span style="COLOR: #008000">地址</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="width"&gt;</span><span style="COLOR: #008000">宽</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="heigth"&gt;</span><span style="COLOR: #008000">高</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="top"&gt;</span><span style="COLOR: #008000">头位置</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="left"&gt;</span><span style="COLOR: #008000">左位置</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;OpenWebFormSize(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;url,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;width,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;heigth,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;top,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;left)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;js&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">&lt;Script&nbsp;language='JavaScript'&gt;window.open('</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;url&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">','','height=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;heigth&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,width=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;width&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,top=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">top</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,left=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">left</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');&lt;/Script&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(js);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**/</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;转向Url制定的页面<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="url"&gt;</span><span style="COLOR: #008000">连接地址</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;JavaScriptLocationHref(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;url)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;js&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">&lt;Script&nbsp;language='JavaScript'&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.location.replace('{0}');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Script&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;js&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.Format(js,&nbsp;url);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(js);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/**/</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;打开指定大小位置的模式对话框<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;/summary&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="webFormUrl"&gt;</span><span style="COLOR: #008000">连接地址</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="width"&gt;</span><span style="COLOR: #008000">宽</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="height"&gt;</span><span style="COLOR: #008000">高</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="top"&gt;</span><span style="COLOR: #008000">距离上位置</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">///</span><span style="COLOR: #008000">&nbsp;</span><span style="COLOR: #808080">&lt;param&nbsp;name="left"&gt;</span><span style="COLOR: #008000">距离左位置</span><span style="COLOR: #808080">&lt;/param&gt;</span><span style="COLOR: #808080"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ShowModalDialogWindow(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;webFormUrl,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;width,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;height,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;top,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;left)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;features&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dialogWidth:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;width.ToString()&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">px</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;dialogHeight:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;height.ToString()&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">px</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;dialogLeft:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;left.ToString()&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">px</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;dialogTop:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;top.ToString()&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">px</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;center:yes;help=no;resizable:no;status:no;scroll=yes</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowModalDialogWindow(webFormUrl,&nbsp;features);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ShowModalDialogWindow(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;webFormUrl,&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;features)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;js&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ShowModalDialogJavascript(webFormUrl,&nbsp;features);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(js);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;ShowModalDialogJavascript(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;webFormUrl,&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;features)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#region</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;js&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">&lt;script&nbsp;language=javascript&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;showModalDialog('</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;webFormUrl&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">','','</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;features&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">');&lt;/script&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;js;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">#endregion</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</span></div>
<img src ="http://www.cnitblog.com/libocumt/aggbug/34480.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/libocumt/" target="_blank">TimeLord</a> 2007-10-07 18:25 <a href="http://www.cnitblog.com/libocumt/articles/34480.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DataList的欠套绑定</title><link>http://www.cnitblog.com/libocumt/articles/34452.html</link><dc:creator>TimeLord</dc:creator><author>TimeLord</author><pubDate>Sat, 06 Oct 2007 13:57:00 GMT</pubDate><guid>http://www.cnitblog.com/libocumt/articles/34452.html</guid><description><![CDATA[1、我们先在页面中布置好两个DataList。并分别起名，dlsProductMenu，dlsProductInfo。如下： <br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TABLE&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="Table3"</span><span style="COLOR: #ff0000">&nbsp;cellSpacing</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #ff0000">&nbsp;cellPadding</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #ff0000">&nbsp;width</span><span style="COLOR: #0000ff">="90%"</span><span style="COLOR: #ff0000">&nbsp;align</span><span style="COLOR: #0000ff">="center"</span><span style="COLOR: #ff0000">&nbsp;border</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TBODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TR</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TD&nbsp;</span><span style="COLOR: #ff0000">vAlign</span><span style="COLOR: #0000ff">="top"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">主菜单开始</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ASP:datalist&nbsp;&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="dlsProductMenu"</span><span style="COLOR: #ff0000">&nbsp;runat</span><span style="COLOR: #0000ff">="server"</span><span style="COLOR: #ff0000">&nbsp;RepeatDirection</span><span style="COLOR: #0000ff">="Horizontal"</span><span style="COLOR: #ff0000">&nbsp;RepeatColumns</span><span style="COLOR: #0000ff">="2"</span><span style="COLOR: #ff0000">&nbsp;Width</span><span style="COLOR: #0000ff">="100%"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ItemTemplate</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TABLE&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="table02"</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="Table13"</span><span style="COLOR: #ff0000">&nbsp;cellSpacing</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #ff0000">&nbsp;cellPadding</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #ff0000">&nbsp;width</span><span style="COLOR: #0000ff">="100%"</span><span style="COLOR: #ff0000">&nbsp;align</span><span style="COLOR: #0000ff">="center"</span><span style="COLOR: #ff0000">&nbsp;border</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TR&nbsp;</span><span style="COLOR: #ff0000">bgColor</span><span style="COLOR: #0000ff">="#f5f5f5"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TD&nbsp;</span><span style="COLOR: #ff0000">width</span><span style="COLOR: #0000ff">="50%"</span><span style="COLOR: #ff0000">&nbsp;height</span><span style="COLOR: #0000ff">="30"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">#&nbsp;DataBinder.Eval(Container.DataItem,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">Name</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TR</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TABLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">子菜单开始</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ASP:datalist&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="dlsProductInfo"</span><span style="COLOR: #ff0000">&nbsp;Width</span><span style="COLOR: #0000ff">="100%"</span><span style="COLOR: #ff0000">&nbsp;runat</span><span style="COLOR: #0000ff">="server"</span><span style="COLOR: #ff0000">&nbsp;RepeatColumns</span><span style="COLOR: #0000ff">="1"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ItemTemplate</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TABLE&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="table02"</span><span style="COLOR: #ff0000">&nbsp;id</span><span style="COLOR: #0000ff">="Table14"</span><span style="COLOR: #ff0000">&nbsp;cellSpacing</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #ff0000">&nbsp;cellPadding</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #ff0000">&nbsp;width</span><span style="COLOR: #0000ff">="100%"</span><span style="COLOR: #ff0000">&nbsp;align</span><span style="COLOR: #0000ff">="center"</span><span style="COLOR: #ff0000">&nbsp;border</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TR&nbsp;</span><span style="COLOR: #ff0000">bgColor</span><span style="COLOR: #0000ff">="#f5f5f5"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TD&nbsp;</span><span style="COLOR: #ff0000">width</span><span style="COLOR: #0000ff">="50%"</span><span style="COLOR: #ff0000">&nbsp;height</span><span style="COLOR: #0000ff">="30"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">DIV&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="style10"</span><span style="COLOR: #ff0000">&nbsp;align</span><span style="COLOR: #0000ff">="left"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">标题：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">a&nbsp;</span><span style="COLOR: #ff0000">href</span><span style="COLOR: #0000ff">=../../'ProductInfoDetail.ASPx?subID=&lt;%#&nbsp;</span><span style="COLOR: #ff0000">DataBinder.Eval(Container.DataItem,"subID")&nbsp;%</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">'&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">#&nbsp;DataBinder.Eval(Container.DataItem,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">Title</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">a</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">DIV</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TR</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TABLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">ItemTemplate</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">ASP:datalist</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">子菜单结束</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">ItemTemplate</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">ASP:datalist</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">主菜单结束</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TR</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TBODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TABLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><br></span></div>
2、进行数据绑定。<br>（1）为主DataList绑定主数据<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">DataSet&nbsp;ds&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;SqlDataProvider.GetMainInfo();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">获取将要绑定的数据。</span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.dlsProductMenu.DataSource&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ds;<br></span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.dlsProductMenu.DataBind();</span></div>
（2）为子DataList绑定从数据。这也是该文的重点。<br>DataList嵌套的重点是要在外层DataList的ItemDataBound事件中完成对嵌套DataList的绑定。在主DataList的 ItemDataBound事件中用e.Item.FindControl方法来找到嵌套层DataList的id,完后为该id绑定数据。比如：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;dlsProductMenu_ItemDataBound(</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000">&nbsp;sender,&nbsp;System.Web.UI.WebControls.DataListItemEventArgs&nbsp;e)<br><img id=Codehighlighter1_108_684_Open_Image onclick="this.style.display='none'; Codehighlighter1_108_684_Open_Text.style.display='none'; Codehighlighter1_108_684_Closed_Image.style.display='inline'; Codehighlighter1_108_684_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_108_684_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_108_684_Closed_Text.style.display='none'; Codehighlighter1_108_684_Open_Image.style.display='inline'; Codehighlighter1_108_684_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_108_684_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_108_684_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(e.Item.ItemType</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">ListItemType.Item</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">e.Item.ItemType&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;ListItemType.AlternatingItem)&nbsp;<br><img id=Codehighlighter1_203_682_Open_Image onclick="this.style.display='none'; Codehighlighter1_203_682_Open_Text.style.display='none'; Codehighlighter1_203_682_Closed_Image.style.display='inline'; Codehighlighter1_203_682_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_203_682_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_203_682_Closed_Text.style.display='none'; Codehighlighter1_203_682_Open_Image.style.display='inline'; Codehighlighter1_203_682_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</span><span id=Codehighlighter1_203_682_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_203_682_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;DataList&nbsp;dataList&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(DataList)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.Item.FindControl(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dlsProductInfo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;DataRowView&nbsp;rowv&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(DataRowView)e.Item.DataItem;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mainID&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Convert.ToInt32(rowv[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Id</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(mainID&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_406_679_Open_Image onclick="this.style.display='none'; Codehighlighter1_406_679_Open_Text.style.display='none'; Codehighlighter1_406_679_Closed_Image.style.display='inline'; Codehighlighter1_406_679_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_406_679_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_406_679_Closed_Text.style.display='none'; Codehighlighter1_406_679_Open_Image.style.display='inline'; Codehighlighter1_406_679_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</span><span id=Codehighlighter1_406_679_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_406_679_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;DataSet&nbsp;ds&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;SqlDataProvider.GetSubContent(mainID);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">获取从数据。</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(ds&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_494_675_Open_Image onclick="this.style.display='none'; Codehighlighter1_494_675_Open_Text.style.display='none'; Codehighlighter1_494_675_Closed_Image.style.display='inline'; Codehighlighter1_494_675_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_494_675_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_494_675_Closed_Text.style.display='none'; Codehighlighter1_494_675_Open_Image.style.display='inline'; Codehighlighter1_494_675_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_494_675_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_494_675_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_512_586_Open_Image onclick="this.style.display='none'; Codehighlighter1_512_586_Open_Text.style.display='none'; Codehighlighter1_512_586_Closed_Image.style.display='inline'; Codehighlighter1_512_586_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_512_586_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_512_586_Closed_Text.style.display='none'; Codehighlighter1_512_586_Open_Image.style.display='inline'; Codehighlighter1_512_586_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_512_586_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_512_586_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataList.DataSource&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;ds;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataList.DataBind();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(Exception&nbsp;ex)<br><img id=Codehighlighter1_619_669_Open_Image onclick="this.style.display='none'; Codehighlighter1_619_669_Open_Text.style.display='none'; Codehighlighter1_619_669_Closed_Image.style.display='inline'; Codehighlighter1_619_669_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_619_669_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_619_669_Closed_Text.style.display='none'; Codehighlighter1_619_669_Open_Image.style.display='inline'; Codehighlighter1_619_669_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_619_669_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_619_669_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Exception(ex.Message);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<img src ="http://www.cnitblog.com/libocumt/aggbug/34452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/libocumt/" target="_blank">TimeLord</a> 2007-10-06 21:57 <a href="http://www.cnitblog.com/libocumt/articles/34452.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP.NET页面重定向三种方法</title><link>http://www.cnitblog.com/libocumt/articles/34447.html</link><dc:creator>TimeLord</dc:creator><author>TimeLord</author><pubDate>Sat, 06 Oct 2007 13:35:00 GMT</pubDate><guid>http://www.cnitblog.com/libocumt/articles/34447.html</guid><description><![CDATA[<div class="g_t_left c07 content" id=blogtext__fks_WtEbInj8veP-juGMptCbG9CLiguGz-wY>
<p><strong>(1)Server.Transfer方法:</strong> </p>
<p>Server.Transfer("m2.aspx");//页面转向(服务器上执行). <br>服务器停止解析本页,保存此页转向前的数据后,再使页面转向到m2.aspx, <br>并将转向前数据加上m2.aspx页结果返回给浏览器. <br></p>
<p><strong>(2)Server.Execute方法: </strong></p>
<p>Server.Execute("m2.aspx"); <br>服务器保存此页转向前的数据后,使页面转向到m2.aspx执行, <br>再返回本页继续执行.再将三者结果合并后返回给浏览器. </p>
<p>以上都是服务器端页面转向所以浏览器不出现页更改记录(显示的地址不会改变). <br>因此,如果用户刷新此页,也许会出现一些其它意外情况. <br>此类页转向,可完成一些其它功能,比如访问到前一页面中的服务端控件. </p>
<p><strong>(3)Response.Redirect:</strong> </p>
<p>当浏览器请求aspx页面时,碰到Redirect(url)方法, <br>相当于告诉浏览器,你先需访问某页面,于是浏览器再向服务器发送一个到此页面的请求. <br>重定位是通过浏览器执行的,在服务器和浏览器之间会产生额外的往返过程。 </p>
<p>在网络状况不是很好的情况下,两次请求会大大的降低应用程序的反应速度,甚至占用多余的带宽. <br><br><strong>总结:</strong> </p>
<p>在网络状态较好的情况下,Redirect(url)方法效率最高!! <br>Server.Transfer方法和Server.Execute方法最灵活!! <br>Server.Execute方法占用资源最多. </p>
</div>
<img src ="http://www.cnitblog.com/libocumt/aggbug/34447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/libocumt/" target="_blank">TimeLord</a> 2007-10-06 21:35 <a href="http://www.cnitblog.com/libocumt/articles/34447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Asp.Net加解密QueryString</title><link>http://www.cnitblog.com/libocumt/articles/34283.html</link><dc:creator>TimeLord</dc:creator><author>TimeLord</author><pubDate>Mon, 01 Oct 2007 11:38:00 GMT</pubDate><guid>http://www.cnitblog.com/libocumt/articles/34283.html</guid><description><![CDATA[一、加密<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">Response.Redirect(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">DetailInfo.aspx?id=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sp10006</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)).Replace(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
二、解密<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;ID&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;System.Text.Encoding.Default.GetString(Convert.FromBase64String(Request.QueryString[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">id</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">].ToString().Replace(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)));</span></div>
<img src ="http://www.cnitblog.com/libocumt/aggbug/34283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/libocumt/" target="_blank">TimeLord</a> 2007-10-01 19:38 <a href="http://www.cnitblog.com/libocumt/articles/34283.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>