﻿<?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>博客园-Windsails</title><link>http://www.cnblogs.com/windsails/</link><description>...人生只似风前絮,欢也零星,悲也零星,都作连江点点萍...</description><language>zh-cn</language><lastBuildDate>Mon, 13 Oct 2008 21:14:49 GMT</lastBuildDate><pubDate>Mon, 13 Oct 2008 21:14:49 GMT</pubDate><ttl>60</ttl><item><title>Rainbow分页解决方案</title><link>http://www.cnblogs.com/windsails/archive/2004/12/16/77953.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Thu, 16 Dec 2004 07:32:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/12/16/77953.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/77953.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/12/16/77953.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/77953.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/77953.html</trackback:ping><description><![CDATA[<p>Rainbow是C#编写的一个优秀的开源门户网站项目。无论是实际应用还是拿来学习，都是一个不错的选择。目前似乎汉化最好的是RC4的版本，在bussoft有下载。但遗憾的是其中很多的功能模块都不提供分页的功能。在网上找了下，发现以下的解决方案：<br />Rainbow其实已经自带分页的功能支持，如在Rainbow.UI.WebControls下，IPaging接口、Paging和PagingNumbers控件在RC4版本中都是现成的了。<br />在每个对应模块中按照一定的步骤适当修改一下原有的代码及其存储过程，就可以达到分页的目的：<br />以Announcements模块为例：<br />1. 增加代码到ascx的头部分：</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;%</span><span style="COLOR: #000000">@&nbsp;Register&nbsp;TagPrefix</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">cc2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;Namespace</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Rainbow.UI.WebControls</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;Assembly</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Rainbow</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">%&gt;</span></div></div> <p>在需要放置分页器的地方放置以下代码：</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">p&nbsp;align&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">right&nbsp;</span><span style="COLOR: #000000">&gt;&lt;</span><span style="COLOR: #000000">cc2:Paging&nbsp;id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pgModules</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;runat</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">server</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">/&gt;&lt;/</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">&gt;</span></div></div> <p>这个是放置在右下角的例子。<br />2. 在ascx对应的cs代码中声明分页器模块：</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;Rainbow.UI.WebControls.IPaging&nbsp;pgModules;</span></div></div> <p>3. 声明分页的缺省大小：</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SettingItem&nbsp;PageSize&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;SettingItem(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />Rainbow.UI.DataTypes.IntegerDataType());<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PageSize.Value&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">._baseSettings.Add(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">PageSize</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,PageSize);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span></div></div> <p>放在构造函数Announcement()中。</p> <p>4. 在初始化OnInit代码部分添加事件代理的响应：</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">pgModules.OnMove&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;EventHandler(Page_Changed);</span></div></div> <p>5. 当然需要添加对应的Page_Changed代码：</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Page_Changed(</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000">&nbsp;sender,&nbsp;System.EventArgs&nbsp;e)<br /><img id="Codehighlighter1_65_178_Open_Image" onclick="this.style.display='none'; Codehighlighter1_65_178_Open_Text.style.display='none'; Codehighlighter1_65_178_Closed_Image.style.display='inline'; Codehighlighter1_65_178_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_65_178_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_65_178_Closed_Text.style.display='none'; Codehighlighter1_65_178_Open_Image.style.display='inline'; Codehighlighter1_65_178_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;</span><span id="Codehighlighter1_65_178_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"></span><span id="Codehighlighter1_65_178_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;pgModules.RecordsPerPage&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Int32.Parse(Settings[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">PageSize</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">].ToString());<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;BindList(pgModules.PageNumber);&nbsp;&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span></div></div> <p>6. 定义新的DataBind函数：</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;BindList(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Page)<br /><img id="Codehighlighter1_36_746_Open_Image" onclick="this.style.display='none'; Codehighlighter1_36_746_Open_Text.style.display='none'; Codehighlighter1_36_746_Closed_Image.style.display='inline'; Codehighlighter1_36_746_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_36_746_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_36_746_Closed_Text.style.display='none'; Codehighlighter1_36_746_Open_Image.style.display='inline'; Codehighlighter1_36_746_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_36_746_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"></span><span id="Codehighlighter1_36_746_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;sortField&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Settings[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SortField</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">].ToString();<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;sortDirection&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Settings[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SortDirection</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">].ToString();<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AnnouncementsDB&nbsp;announcements&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;AnnouncementsDB();<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataSet&nbsp;announces&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;announcements.GetAnnouncementsPaged(ModuleID,&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />Version,Page,pgModules.RecordsPerPage);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(announces.Tables.Count</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;announces.Tables[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].Rows.Count&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br /><img id="Codehighlighter1_429_524_Open_Image" onclick="this.style.display='none'; Codehighlighter1_429_524_Open_Text.style.display='none'; Codehighlighter1_429_524_Closed_Image.style.display='inline'; Codehighlighter1_429_524_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_429_524_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_429_524_Closed_Text.style.display='none'; Codehighlighter1_429_524_Open_Image.style.display='inline'; Codehighlighter1_429_524_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_429_524_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"></span><span id="Codehighlighter1_429_524_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pgModules.RecordCount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)(announces.Tables[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].Rows[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">RecordCount</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataView&nbsp;myDataView&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;DataView();<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myDataView&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;announces.Tables[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].DefaultView;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myDataView.Sort&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sortField&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;sortDirection;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myDataList.DataSource&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;myDataView;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myDataList.DataBind();<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span></div></div> <p>7. 在Page_Load中，替换掉原来的Databind的方法：</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pgModules.RecordsPerPage&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Int32.Parse(Settings[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">PageSize</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">].ToString());<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BindList(pgModules.PageNumber);<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span></div></div> <p>8. 在数据库中建立对应的分页操作的存储过程，如 rb_GetAnnouncementsPaged，注意付给适当的权限。</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">CREATE</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">PROCEDURE</span><span style="COLOR: #000000">&nbsp;rb_GetAnnouncementsPaged<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />(<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;@ModuleID&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000">,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;@WorkflowVersion&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000">,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;@Page&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000">,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;@RecordsPerPage&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />)<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">AS</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008080"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">DECLARE</span><span style="COLOR: #000000">&nbsp;@FirstRec&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000">,&nbsp;@LastRec&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008080"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">CREATE</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">TABLE</span><span style="COLOR: #000000">&nbsp;#TempItems<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />(<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />ID&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">IDENTITY</span><span style="COLOR: #000000">,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />ItemID&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000">,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />CreatedByUser&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">nvarchar</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">100</span><span style="COLOR: #000000">),<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />CreatedDate&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">datetime</span><span style="COLOR: #000000">,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />Title&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">nvarchar</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">150</span><span style="COLOR: #000000">),<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />MoreLink&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">nvarchar</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">150</span><span style="COLOR: #000000">),<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />MobileMoreLink&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">nvarchar</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">150</span><span style="COLOR: #000000">),<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />ExpireDate&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">datetime</span><span style="COLOR: #000000">,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />Description&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">nvarchar</span><span style="COLOR: #000000">(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">2000</span><span style="COLOR: #000000">)<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />)<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">BEGIN</span><span style="COLOR: #000000">&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SET</span><span style="COLOR: #000000">&nbsp;NOCOUNT&nbsp;</span><span style="COLOR: #0000ff">ON</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">IF</span><span style="COLOR: #000000">&nbsp;(&nbsp;@WorkflowVersion&nbsp;</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">&nbsp;)<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">INSERT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">INTO</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />#TempItems<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />(<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />ItemID,&nbsp;CreatedByUser,&nbsp;CreatedDate,&nbsp;Title,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />MoreLink,&nbsp;MobileMoreLink,&nbsp;ExpireDate,&nbsp;Description<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />)<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ItemID,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreatedByUser,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreatedDate,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Title,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MoreLink,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MobileMoreLink,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExpireDate,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">FROM</span><span style="COLOR: #000000">&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rb_Announcements<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">WHERE</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ModuleID&nbsp;</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">&nbsp;@ModuleID<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">AND</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExpireDate&nbsp;</span><span style="COLOR: #808080">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">GETDATE</span><span style="COLOR: #000000">()<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">ORDER</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">BY</span><span style="COLOR: #000000">&nbsp;CreatedDate&nbsp;</span><span style="COLOR: #0000ff">DESC</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">ELSE</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">INSERT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">INTO</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />#TempItems<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />(<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />ItemID,&nbsp;CreatedByUser,&nbsp;CreatedDate,&nbsp;Title,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />MoreLink,&nbsp;MobileMoreLink,&nbsp;ExpireDate,&nbsp;Description<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />)<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ItemID,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreatedByUser,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CreatedDate,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Title,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MoreLink,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MobileMoreLink,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExpireDate,<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">FROM</span><span style="COLOR: #000000">&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rb_Announcements_st<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">WHERE</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ModuleID&nbsp;</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">&nbsp;@ModuleID<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #808080">AND</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExpireDate&nbsp;</span><span style="COLOR: #808080">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">GETDATE</span><span style="COLOR: #000000">()<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">ORDER</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">BY</span><span style="COLOR: #000000">&nbsp;CreatedDate&nbsp;</span><span style="COLOR: #0000ff">DESC</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;@FirstRec&nbsp;</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">&nbsp;(@Page&nbsp;</span><span style="COLOR: #808080">-</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #808080">*</span><span style="COLOR: #000000">&nbsp;@RecordsPerPage<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;@LastRec&nbsp;</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">&nbsp;(@Page&nbsp;</span><span style="COLOR: #808080">*</span><span style="COLOR: #000000">&nbsp;@RecordsPerPage&nbsp;</span><span style="COLOR: #808080">+</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">)<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #808080">*</span><span style="COLOR: #000000">,&nbsp;(</span><span style="COLOR: #0000ff">SELECT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">COUNT</span><span style="COLOR: #000000">(</span><span style="COLOR: #808080">*</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #0000ff">FROM</span><span style="COLOR: #000000">&nbsp;#TempItems)&nbsp;RecordCount<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">FROM</span><span style="COLOR: #000000">&nbsp;#TempItems<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">WHERE</span><span style="COLOR: #000000">&nbsp;ID</span><span style="COLOR: #808080">&gt;</span><span style="COLOR: #000000">@FirstRec&nbsp;</span><span style="COLOR: #808080">AND</span><span style="COLOR: #000000">&nbsp;ID</span><span style="COLOR: #808080">&lt;</span><span style="COLOR: #000000">@LastRec<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">SET</span><span style="COLOR: #000000">&nbsp;NOCOUNT&nbsp;</span><span style="COLOR: #0000ff">OFF</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">END</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">GO</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span></div></div> <p>9. 当然，数据访问层也需要修改，如6中也可以看到了，需要增加GetAnnouncementsPaged函数在AnnouncementsDB中：</p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;DataSet&nbsp;GetAnnouncementsPaged(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;moduleID,&nbsp;WorkFlowVersion&nbsp;version,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;page,&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;perPageNumber)&nbsp;<br /><img id="Codehighlighter1_111_1665_Open_Image" onclick="this.style.display='none'; Codehighlighter1_111_1665_Open_Text.style.display='none'; Codehighlighter1_111_1665_Closed_Image.style.display='inline'; Codehighlighter1_111_1665_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_111_1665_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_111_1665_Closed_Text.style.display='none'; Codehighlighter1_111_1665_Open_Image.style.display='inline'; Codehighlighter1_111_1665_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_111_1665_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"></span><span id="Codehighlighter1_111_1665_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlConnection&nbsp;myConnection&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;PortalSettings.SqlConnectionString;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlDataAdapter&nbsp;myCommand&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;SqlDataAdapter(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">rb_GetAnnouncementsPaged</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;myConnection);<br /></span><span style="COLOR: #008000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myCommand.SelectCommand.CommandType&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;CommandType.StoredProcedure;<br /></span><span style="COLOR: #008000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlParameter&nbsp;parameterModuleID&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;SqlParameter(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">@ModuleID</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;SqlDbType.Int,&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameterModuleID.Value&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;moduleID;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myCommand.SelectCommand.Parameters.Add(parameterModuleID);<br /></span><span style="COLOR: #008000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlParameter&nbsp;parameterWorkflowVersion&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;SqlParameter(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">@WorkflowVersion</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;SqlDbType.Int,&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameterWorkflowVersion.Value&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)version;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myCommand.SelectCommand.Parameters.Add(parameterWorkflowVersion);<br /></span><span style="COLOR: #008000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlParameter&nbsp;parameterPage&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;SqlParameter(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">@Page</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;SqlDbType.Int,&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameterPage.Value&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;page;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myCommand.SelectCommand.Parameters.Add(parameterPage);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SqlParameter&nbsp;parameterPerPageNumber&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;SqlParameter(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">@RecordsPerPage</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;SqlDbType.Int,&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameterPerPageNumber.Value&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;perPageNumber;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myCommand.SelectCommand.Parameters.Add(parameterPerPageNumber);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataSet&nbsp;myDataSet&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;DataSet();<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1505_1541_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1505_1541_Open_Text.style.display='none'; Codehighlighter1_1505_1541_Closed_Image.style.display='inline'; Codehighlighter1_1505_1541_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1505_1541_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1505_1541_Closed_Text.style.display='none'; Codehighlighter1_1505_1541_Open_Image.style.display='inline'; Codehighlighter1_1505_1541_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1505_1541_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"></span><span id="Codehighlighter1_1505_1541_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myCommand.Fill(myDataSet);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">finally</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1557_1615_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1557_1615_Open_Text.style.display='none'; Codehighlighter1_1557_1615_Closed_Image.style.display='inline'; Codehighlighter1_1557_1615_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1557_1615_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1557_1615_Closed_Text.style.display='none'; Codehighlighter1_1557_1615_Open_Image.style.display='inline'; Codehighlighter1_1557_1615_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1557_1615_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"></span><span id="Codehighlighter1_1557_1615_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myConnection.Close();&nbsp;</span></span></span></div> <div><span><span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;myDataSet;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span></div></div> <p>10. 有些模块原来是使用SqlDataReader的，在分页中也可以适当将其分页用DataSet来替代，如Discussion模块。</p> <p>&nbsp;</p> <p> <hr id="null" /> <p></p> <p>附件是<A href="http://www.cnblogs.com/Files/windsails/分页存储过程.rar">几个模块分页的存储过程</a>。</p><img src ="http://www.cnblogs.com/windsails/aggbug/77953.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42969/" target="_blank">[新闻]MySpace推自助广告平台MyAds</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>FTB2.0和CuteEditor的一些问题</title><link>http://www.cnblogs.com/windsails/archive/2004/11/04/60296.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Thu, 04 Nov 2004 03:12:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/11/04/60296.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/60296.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/11/04/60296.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/60296.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/60296.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 最近有些开发用了FTB2.0。普遍问题是它自己带的“图片增加”功能不可以直接使用。这个问题倒不大，因为我们的应用中对于资源（如图片，声音等）的管理是另外自己做了个资源管理器的。但目前发现了一个更为麻烦的事情，就是它对一些HTML的支持不是太好，会丢失信息，这个倒是比较严重的问题。</p> <p>例如需要编辑下面的代码：<br /></p> <div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <div><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">H1</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">模板五</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">H1</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">H2</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">模板五内容</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">H2</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">H3</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">详细内容</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">H3</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">P</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TABLE&nbsp;</span><span style="COLOR: #ff0000">cellspacing</span><span style="COLOR: #0000ff">="1"</span><span style="COLOR: #ff0000">&nbsp;cellpadding</span><span style="COLOR: #0000ff">="1"</span><span style="COLOR: #ff0000">&nbsp;border</span><span style="COLOR: #0000ff">="1"</span><span style="COLOR: #ff0000">&nbsp;style</span><span style="COLOR: #0000ff">="WIDTH:&nbsp;100%"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&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 /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&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 /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&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">background</span><span style="COLOR: #0000ff">="/images/cnblogs_com/windsails/arrayList1.JPG"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">Hello</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&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">yes</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&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">Ok</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&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 /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&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 /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&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">1</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&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">2</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&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">3</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&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 /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&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 /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" />&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 /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">P</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">br</span><span style="COLOR: #0000ff">/&gt;&lt;</span><span style="COLOR: #800000">H1</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">特殊台</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">br</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">H1</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">H2</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">test</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">br</span><span style="COLOR: #0000ff">/&gt;&lt;</span><span style="COLOR: #800000">br</span><span style="COLOR: #0000ff">/&gt;&lt;</span><span style="COLOR: #800000">IMG&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="http://www.cnblogs.com/images/cnblogs_com/windsails/arrayList1.JPG"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">H2</span><span style="COLOR: #0000ff">&gt;</span> </div></div> <p>用FTB2.0来编辑的效果：<a class="titlelink" id="Editor_Results_rprSelectionList__ctl1_LinkTitle" href="/windsails/archive/2004/11/04/60265.html"><font color="#000000">testFTB2.0</font></a> </p> <p>用CuteEditor来编辑的效果：<a class="titlelink" id="Editor_Results_rprSelectionList__ctl2_Hyperlink1" href="/windsails/archive/2004/11/04/60264.html"><font color="#000000">testCuteEditor</font></a> </p> <p>在FTB2.0中，对于&lt;TD background="/images/cnblogs_com/windsails/arrayList1.JPG"&gt;的信息丢失了。</p> <p>而在CuteEditor中却还可以保留下来，估计是FTB2.0在处理中有些小Bug吧，可惜没有源代码，不可以进一步分析。</p> <p>但CuteEditor是否又好很多呢？</p> <p>也是上面的代码，在用CuteEditor编辑中，对于&lt;H1&gt;...&lt;/H1&gt;形式的内容，在编辑中会变成了绿色字体，如图：<br /><img height="280" src="http://www.cnblogs.com/images/cnblogs_com/windsails/cuteEditor1.JPG" width="640" border="0" /> </p> <p>但&lt;H2&gt;...那些却没有问题。</p> <p><br />而到了正式保存，发布后在显示中又没有问题了，当然显示和CuteEditor没有关系了，起码它没有丢失了信息，但在WYSIWYG的效果上打了折扣。 </p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外就是编辑时候不断闪屏...呵呵~~ CuteEditor的实验我是在cnblogs中做的，因此发现了这个问题，不知道是否CuteEditor固有的，有时间自己再去找个CuteEditor仔细研究下。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还有就是CuteEditor不可以获取我复制在缓冲的信息吗？例如用NotePad编辑了些东西，想直接copy到CuteEditor中，结果只是CuteEditor上次Copy的内容，而不是NotePad中的，这个倒比较奇怪了。</p> <p>起码CuteEdior没有丢失FTB2.0会丢失的信息。</p> <p>BTW: 那位用FTB2.0时候遇过类似问题，请指教解决方法。<img height="19" src="http://www.cnblogs.com/Emoticons/72_72.gif" width="19" border="0" /> </p> <p>&nbsp;</p> <p>FTB2.0的部分文章:</p> <p><a class="titlelink" id="Editor_Results_rprSelectionList__ctl11_LinkTitle" href="/windsails/archive/2004/09/27/47143.html"><font color="#0000ff">FreeTextBox实现机制</font></a></p> <p><a class="titlelink" id="Editor_Results_rprSelectionList__ctl12_Hyperlink1" href="/windsails/archive/2004/09/24/46369.html"><font color="#0000ff">FreeTextBox的ToolbarButton整理</font></a></p><img src ="http://www.cnblogs.com/windsails/aggbug/60296.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42960/" target="_blank">[新闻]Facebook创始人:信息共享或存摩尔定律</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>testFTB2.0</title><link>http://www.cnblogs.com/windsails/archive/2004/11/04/60265.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Thu, 04 Nov 2004 02:35:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/11/04/60265.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/60265.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/11/04/60265.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/60265.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/60265.html</trackback:ping><description><![CDATA[<H1>模板五</H1><H2>模板五内容</H2><H3>详细内容</H3>
<P>
    <TABLE cellspacing="1" cellpadding="1" border="1" style="WIDTH: 100%">
    <TBODY>
    <TR>
        <TD>Hello</TD>
        <TD>yes</TD>
        <TD>Ok</TD>
    </TR>
    <TR>
        <TD>1</TD>
        <TD>2</TD>
        <TD>3</TD>
    </TR>
    </TBODY>
    </TABLE>
</P><br/><H1>特殊台<br/></H1><H2>test<br/><br/><IMG src="http://www.cnblogs.com/images/cnblogs_com/windsails/arrayList1.JPG"/></H2><img src ="http://www.cnblogs.com/windsails/aggbug/60265.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42960/" target="_blank">[新闻]Facebook创始人:信息共享或存摩尔定律</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>testCuteEditor</title><link>http://www.cnblogs.com/windsails/archive/2004/11/04/60264.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Thu, 04 Nov 2004 02:34:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/11/04/60264.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/60264.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/11/04/60264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/60264.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/60264.html</trackback:ping><description><![CDATA[<H1>模板五</H1><H2>模板五内容</H2><H3>详细内容</H3>
<P>
    <TABLE cellspacing="1" cellpadding="1" border="1" style="WIDTH: 100%">
    <TBODY>
    <TR>
        <TD background="/images/cnblogs_com/windsails/arrayList1.JPG">Hello</TD>
        <TD>yes</TD>
        <TD>Ok</TD>
    </TR>
    <TR>
        <TD>1</TD>
        <TD>2</TD>
        <TD>3</TD>
    </TR>
    </TBODY>
    </TABLE>
</P><br/><H1>特殊台<br/></H1><H2>test<br/><br/><IMG src="http://www.cnblogs.com/images/cnblogs_com/windsails/arrayList1.JPG"/></H2><img src ="http://www.cnblogs.com/windsails/aggbug/60264.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42960/" target="_blank">[新闻]Facebook创始人:信息共享或存摩尔定律</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>看看MS内部对.NET的使用情况...</title><link>http://www.cnblogs.com/windsails/archive/2004/11/04/60242.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Thu, 04 Nov 2004 01:57:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/11/04/60242.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/60242.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/11/04/60242.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/60242.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/60242.html</trackback:ping><description><![CDATA[<P>看看MS内部对.NET的使用情况 (摘自Dan Fernandez&#39;s Blog)<br/><br/>In the comments of&#160;Scott Hanselman&#39;s blog posts on why <A href="http://www.hanselman.com/blog/CommentView.aspx?guid=73e8f82b-d58c-49e6-b2dd-d1f10f6a3179">VB developers don&#39;t switch/migrate/convert to VB.NET</A>, someone replied with the following:
</P>
<P><EM><FONT size="2">So what application has Microsoft written totally in .NET that is worth a [expletive]? <br/>Visual Studio - NO, Office - NO, Notepad - NO, Calc - NO. <br/>Why haven&#39;t they? .....<br/><br/></FONT></EM>
</P>
<P>Here&#39;s my response. While the .NET Framework hasn&#39;t been around for a long period of time (shiping in February 2002), there is quite a lot of work being done by different teams to use the .NET Framework across Microsoft&#39;s product line. Below is a quick list of just some of the ways we&#39;re using managed code in products that ship today and how we plan to use managed code in the future. </P>
<P><STRONG>Windows Client<br/></STRONG>
</P>
<UL>
<LI><STRONG>Windows XP Pro/Home </STRONG>was released before the .NET Framework which is why it was not included in the box. That being said, Soma points out the <A href="http://blogs.msdn.com/somasegar/archive/2004/06/03/148131.aspx">70+ million </A>who have downloaded the .NET Framework using Windows Update (note that the 70M number&#160;includes all versions of Windows). In fact, there is a lot of debate about why we didn&#39;t include Windows XP Service Pack 2 (XP SP2) with the .NET Framework, although most feedback agrees that we should not require installing new features in a service pack that don&#39;t relate to security/bug fixes. 
</LI>
<LI><STRONG>Windows XP Pro Tablet PC Edition</STRONG> includes the .NET Framework and the Tablet API is written&#160;using the .NET Framework. 
</LI>
<LI><STRONG>Windows XP Media Center Edition </STRONG>includes the .NET Framework and includes MCE-specific applications written using the .NET Framework. 
</LI>
<LI><STRONG>Windows &quot;Longhorn&quot;</STRONG> dramatically increases the amount of managed Windows code including components like&#160;WinFx, an all managed&#160;API, &#160;&quot;Avalon&quot;, a managed presentation layer,&#160;and &quot;Indigo&quot;&#160;a messaging stack, all using managed code.
</LI>
</UL>
<P><STRONG>Windows Server<br/></STRONG>
</P>
<UL>
<LI><STRONG>Windows Server 2003</STRONG> shipped with the .NET Framework 1.1. New features like Sharepoint Team Services and UDDI Services are written in managed code and require the .NET Framework.&#160; 
</LI>
<LI><STRONG>Small Business Server 2003 </STRONG>shipped with the .NET Framework 1.1 and includes some SBS-specific applications like Remote Web Workplace and the Backup Snap-in written in managed code.&#160;
</LI>
</UL>
<P><STRONG>Office<br/></STRONG>While Office is a little behind in adopting the .NET Framework, you&#39;ll still find the .NET Framework&#160;in use, athough probably not as much as you would probably want. Then again, Office is also expanding itself from being stand alone applications to a fully integrated set of tools for collaboration as witnessed with the <A href="http://www.microsoft.com/office/prodinfo.mspx">Microsoft Office System</A>, and our server products&#160;with Web front ends pretty much all use ASP.NET.
</P>
<UL>
<LI><STRONG>Office 2003 Professional Edition</STRONG>&#160;includes the .NET Framework, but I believe this is an optional install and is primarily geared for using FrontPage 11 with ASP.NET. Outlook&#39;s new Business Contact Manager is primarily written using managed code and requires the .NET Framework. 
</LI>
<LI><STRONG>SharePoint Portal Server 2003 </STRONG>is written using ASP.NET.
</LI>
</UL>
<P><STRONG>Windows Server System</STRONG>
</P>
<UL>
<LI><STRONG>SQL Server 2000 </STRONG>was released before the .NET Framework. Even so, managed providers for SQL Server 7/2000 were included in the .NET Framework 1.0/1.1. 
</LI>
<LI><STRONG>SQL Server Reporting Services </STRONG>shipped after SQL Server 2000, and is primarily written in managed code. 
</LI>
<LI><STRONG>SQL Server&#160;2005</STRONG> <STRONG>(“Yukon”) </STRONG>will natively host the .NET Framework 2.0, meaning you can write managed database objects like user defined types, stored procedures, triggers, and more&#160;in managed code. 
</LI>
<LI><STRONG>Exchange 2003&#160;</STRONG>included managed code for it&#39;s mobile&#160;UI.&#160; Outlook Mobile Access is written in managed code using ASP.NET mobile controls. 
</LI>
<LI><STRONG>BizTalk 2004&#160;</STRONG>has parts written in managed code. 
</LI>
<LI><STRONG>Commerce Server 2002 </STRONG>has parts are written in managed code. 
</LI>
<LI><STRONG>Content Management Server 2002&#160;</STRONG>has<STRONG> </STRONG>parts are written in managed code. 
</LI>
<LI><STRONG>MSN Messenger Server </STRONG>includes a presence server and admin/config tools written in managed code. 
</LI>
<LI><STRONG>Microsoft Business Network </STRONG>has parts written in managed code and&#160;requires .NET Framework 1.1. 
</LI>
<LI><STRONG>MS-CRM&#160;</STRONG>has parts written in managed code. 
</LI>
<LI><STRONG>Speech Server 2004</STRONG>&#160;has parts written in managed code.
</LI>
</UL>
<P><STRONG>Developer Tools</STRONG>
</P>
<UL>
<LI><STRONG>.NET Framework 1.0/1.1</STRONG> has parts written in managed code. 
</LI>
<LI><STRONG>.NET Framework 2.0</STRONG>&#160;has parts written in managed code 
</LI>
<LI><STRONG>Visual Studio .NET 2002/2003</STRONG>&#160;has parts&#160;written in managed code. 
</LI>
<LI><STRONG>Visual Studio 2005&#160;</STRONG>has parts written in managed code. 
</LI>
<LI><STRONG>ASP.NET Web Matrix&#160;</STRONG>is fully written in managed code.
</LI>
</UL>
<P><STRONG>Microsoft Web Properties using the .NET Framework</STRONG>
</P>
<UL>
<LI><A href="http://www.msn.com/">www.msn.com</A>&#160; 
</LI>
<LI><A href="http://www.microsoft.com/">www.microsoft.com</A>&#160; 
</LI>
<LI><A href="http://msdn.microsoft.com/">msdn.microsoft.com</A>&#160; 
</LI>
<LI><A href="http://www.gotdotnet.com/">www.gotdotnet.com</A>&#160; 
</LI>
<LI><A href="http://www.uddi.microsoft.com/">uddi.microsoft.com</A> 
</LI>
<LI><A href="http://www.xbox.com/">www.xbox.com</A> 
</LI>
<LI><A href="http://www.microsoft.com/mappoint/webservice/default.mspx">MapPoint XML Web Service</A>&#160;
</LI>
</UL>
<P><STRONG>Microsoft Internal applications using the .NET Framework</STRONG>
</P>
<UL>
<LI>Account Explorer&#160; </LI>
<LI>HeadTrax </LI>
<LI>Consensus </LI>
<LI>MS Contract </LI>
<LI>eSupport </LI>
<LI>Enterprise Product Roadmap (EPR) Explorer </LI>
<LI>TSP Academy Virtual Instructor </LI>
<LI>Country Manager Content </LI>
<LI>TANLink Contributor and TanLink Explorer </LI>
<LI>Contoso Enterprise Demo v2 – Hotel Desk</LI>
</UL>
<P><EM>Does this mean Microsoft is only developing in managed code?</EM> No, definitely not. I would say the #1 language in use at Microsoft is C/C++. We also <A href="http://blogs.msdn.com/danielfe/admin/msdn.microsoft.com/visualc/">invest heavily</A> in C++ and help support developers who need the power and performance C++ offers. We also&#160;have, in my opinion, the best C++ compiler of any platform. 
</P>
<P>And we&#39;re just getting started...</P><img src ="http://www.cnblogs.com/windsails/aggbug/60242.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42960/" target="_blank">[新闻]Facebook创始人:信息共享或存摩尔定律</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>base想到...</title><link>http://www.cnblogs.com/windsails/archive/2004/10/28/57794.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Thu, 28 Oct 2004 08:02:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/10/28/57794.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/57794.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/10/28/57794.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/57794.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/57794.html</trackback:ping><description><![CDATA[摘要: base 是C#中77个（如果没有记错的话）关键字之一，在MSDN文档中列举的主要作用是两个：1. 调用基类上已被其他方法重写的方法。2. 指定创建派生类实例时应调用的基类构造函数。注意点：基类访问只能在构造函数、实例方法或实例属性访问器中进行，从静态方法中使用base关键字是错误的。对于第1点，作用十分明显，重写了父类函数，但是又需要调用父类函数的时候就需要用到了，例如下面的代码：usingSy&nbsp;&nbsp;<a href='http://www.cnblogs.com/windsails/archive/2004/10/28/57794.html'>阅读全文</a><img src ="http://www.cnblogs.com/windsails/aggbug/57794.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42959/" target="_blank">[新闻]微软承认Vista用户账户控制功能有问题</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>多个Main函数的应用程序</title><link>http://www.cnblogs.com/windsails/archive/2004/10/25/56658.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Mon, 25 Oct 2004 15:00:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/10/25/56658.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/56658.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/10/25/56658.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/56658.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/56658.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Main函数是C#应用程序的主入口，且需要用public和static来修饰，是否需要返回值和输入命令参数则根据实际需要而定。但是否想过在一个应用程序中，允许有多个类包含Main吗？<BR>例如下面的代码：<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;Main1<BR><IMG id=Codehighlighter1_27_125_Open_Image onclick="this.style.display='none'; Codehighlighter1_27_125_Open_Text.style.display='none'; Codehighlighter1_27_125_Closed_Image.style.display='inline'; Codehighlighter1_27_125_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top></SPAN><SPAN id=Codehighlighter1_27_125_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"></SPAN><SPAN id=Codehighlighter1_27_125_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&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;Main()<BR><IMG id=Codehighlighter1_62_122_Open_Image onclick="this.style.display='none'; Codehighlighter1_62_122_Open_Text.style.display='none'; Codehighlighter1_62_122_Closed_Image.style.display='inline'; Codehighlighter1_62_122_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_62_122_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"></SPAN><SPAN id=Codehighlighter1_62_122_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Main1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main2.Main();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;Main2<BR><IMG id=Codehighlighter1_140_217_Open_Image onclick="this.style.display='none'; Codehighlighter1_140_217_Open_Text.style.display='none'; Codehighlighter1_140_217_Closed_Image.style.display='inline'; Codehighlighter1_140_217_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top></SPAN><SPAN id=Codehighlighter1_140_217_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"></SPAN><SPAN id=Codehighlighter1_140_217_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&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;Main()<BR><IMG id=Codehighlighter1_174_214_Open_Image onclick="this.style.display='none'; Codehighlighter1_174_214_Open_Text.style.display='none'; Codehighlighter1_174_214_Closed_Image.style.display='inline'; Codehighlighter1_174_214_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_174_214_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"></SPAN><SPAN id=Codehighlighter1_174_214_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Main2</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></DIV></DIV>
<P>直接编译肯定出错的，如下图：<BR><IMG height=158 src="http://www.cnblogs.com/images/cnblogs_com/windsails/MultiMain1.JPG" width=648 border=0></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看起来似乎不允许在一个应用程序集中定义多个Main函数，但在编译时候设置参数是允许的。<BR>如下面的命令：</P>
<P><FONT color=#0000ff>csc test2.cs /main:Main1</FONT></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这时候会用Main1类中的Main作为主入口点。而另外一个Main还可以被看作一般的类的静态函数来对待，可以直接调用，如下面的代码中：<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;Main1<BR><IMG id=Codehighlighter1_12_110_Open_Image onclick="this.style.display='none'; Codehighlighter1_12_110_Open_Text.style.display='none'; Codehighlighter1_12_110_Closed_Image.style.display='inline'; Codehighlighter1_12_110_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top></SPAN><SPAN id=Codehighlighter1_12_110_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"></SPAN><SPAN id=Codehighlighter1_12_110_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&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;Main()<BR><IMG id=Codehighlighter1_47_107_Open_Image onclick="this.style.display='none'; Codehighlighter1_47_107_Open_Text.style.display='none'; Codehighlighter1_47_107_Closed_Image.style.display='inline'; Codehighlighter1_47_107_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_47_107_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"></SPAN><SPAN id=Codehighlighter1_47_107_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Main1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main2.Main();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV></DIV>
<P><BR>用ildasm来检查对比两个Main函数的异同：<BR><IMG height=374 src="http://www.cnblogs.com/images/cnblogs_com/windsails/MultiMain3.JPG" width=636 border=0><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以看到.entrypoint在Main1::Main中。</P>
<P>如果编译时候用别的参数：<BR><FONT color=#0000ff>csc test2.cs /main:Main2</FONT></P>
<P>则又可以将主入口点定为另外一个类的Main函数了。这种用法对于调试和测试应该可以带来许多方便。</P>
<P>那么如果在Vistual Studio的IDE可以做到吗？答案是肯定的，在属性页中有对应的参数，如下图：<BR><IMG height=366 src="http://www.cnblogs.com/images/cnblogs_com/windsails/MultiMain2.JPG" width=442 border=0></P><img src ="http://www.cnblogs.com/windsails/aggbug/56658.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42958/" target="_blank">[新闻]资本寒冬侵袭中国视频网站 营销春天或不远</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>伟大架构师的秘密</title><link>http://www.cnblogs.com/windsails/archive/2004/10/22/55506.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Fri, 22 Oct 2004 07:23:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/10/22/55506.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/55506.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/10/22/55506.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/55506.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/55506.html</trackback:ping><description><![CDATA[十分值得一读:<BR><BR>
<H1 align=center><FONT color=#0000ff size=5>伟大架构师的秘密</FONT></H1>
<H2 class=subtitle></H2>
<DIV class=date><STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </STRONG>所有伟大的架构师都掌握了在抽象的不同层次上概念化解决方案的技能。通过将解决方案组织到离散的层次，架构师可以专注于解决方案的单个方面而忽略所有剩余的复杂性。展示将抽象层次应用到 IT 解决方案的技术，并将其与其他工程学科相比较。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR><BR>具体看:</DIV><A href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx"><BR>http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/USdnmajgreatarchitect.mspx</A><img src ="http://www.cnblogs.com/windsails/aggbug/55506.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42957/" target="_blank">[新闻]金融风暴波及全球创业板 中国概念股难独善其身</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>权限管理越来越复杂</title><link>http://www.cnblogs.com/windsails/archive/2004/10/22/55388.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Fri, 22 Oct 2004 03:20:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/10/22/55388.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/55388.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/10/22/55388.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/55388.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/55388.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 在一些网站应用中，有时会涉及到一些资源的网页管理问题。例如，通过网页的方式管理一些网站服务器端的资源，如图片等。图片等资源文件是放在网站的某个目录下面的，如果有些资源不是通过网页方式提交，或者可能是以前的一些数据资源等，通过COPY或者其它的方式将他们放到新的网站上。这时候往往会遇到的问题是：通过网页方式不一定那么自如的修改这些原有的数据资源。道理也简单，因为copy用到的权限是Windows下面的，而网页操作则用到的是IIS或者是ASP.NET的对应权限。简单的解决办法，将资源目录的权限赋给ASP.NET对应的帐号就可以了。我试过赋给IIS却不行的，看来ASP.NET的上传文件操作用的是自己对应的帐号。</P>
<P>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 随着系统的层次增多，权限控制问题是越来越复杂。每个应用服务器有自己影射在系统上的权限，有些又可以和Windows集成认证，有些应用又支持多种方式的认证（authentication），例如ASP.NET支持Forms，Passport和Windows集成的三种（还有None）方式来认证，下来则又涉及到了授权（authorization）的问题。应用层层次越多，这些安全的问题就越复杂啊。但只要头脑清醒，基本概念清晰，估计也没有太大的问题。<IMG src="http://www.cnblogs.com/Emoticons/regular_smile.gif"><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Authentication和Authorization在每个Web应用的Config文件中也可以设置。其实解决一个权限的复杂问题应该有多种途径，安全和省心则是首选。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外，在资源修改管理中还遇到一个问题，就是资源上传更新后，如果不Refresh的话，在IE中还保持着旧的资源，如果将IE的Cache功能去掉应该可以解决，我想这个不是好的办法，是否有更好的方法？<BR>&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 记得以前HTML的头部分可以声明的，如下面：<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">META&nbsp;</SPAN><SPAN style="COLOR: #ff0000">HTTP-EQUIV</SPAN><SPAN style="COLOR: #0000ff">="Expires"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;CONTENT</SPAN><SPAN style="COLOR: #0000ff">="-1"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">META&nbsp;</SPAN><SPAN style="COLOR: #ff0000">HTTP-EQUIV</SPAN><SPAN style="COLOR: #0000ff">="PRAGMA"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;CONTENT</SPAN><SPAN style="COLOR: #0000ff">="NO-CACHE"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">META&nbsp;</SPAN><SPAN style="COLOR: #ff0000">Http-Equiv</SPAN><SPAN style="COLOR: #0000ff">="Cache-Control"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;Content</SPAN><SPAN style="COLOR: #0000ff">="no-cache"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但在IE6下起不到效果了......<IMG src="http://www.cnblogs.com/Emoticons/cry_smile.gif"><img src ="http://www.cnblogs.com/windsails/aggbug/55388.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42957/" target="_blank">[新闻]金融风暴波及全球创业板 中国概念股难独善其身</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>ASP.NET跨应用程序进行登录的解决</title><link>http://www.cnblogs.com/windsails/archive/2004/10/15/52818.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Fri, 15 Oct 2004 09:38:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/10/15/52818.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/52818.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/10/15/52818.html#Feedback</comments><slash:comments>33</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/52818.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/52818.html</trackback:ping><description><![CDATA[<P>最近一个朋友问我一个问题:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如何可以将ASPdotNET Forum2.0放到他的一个项目中（好象网上也有人讨论过如何将dotText和ASPdotNET Forum等开源项目集成起来的），他原来的项目已经有一套用户登录机制了，而且用户数据库也是现成的，如何使得在他原来系统上登录后就可以直接转到Forum上，而又不需要再次输入用户信息呢?刚开始感觉a piece of cake<IMG src="http://www.cnblogs.com/Emoticons/cake.gif">...象这种一次登录，然后可以访问多个应用其实在很久就已经提出来了，在几年前还帮公司做过一个类似的产品原型，但那个是针对异构网站的，说白了就是做一个代理，只是内部有套机制将后面的几个异构网站的用户数据库映射起来而已。这种方式看起来似乎可以解决问题，但数据库之间的映射关系处理起来很麻烦，如果下面应用多了的话，工作量是很大的。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于这种技术，似乎有个名词叫Single Sign On，有点象网易的通行证了。如果内部网站是同一批人做的倒问题不大，只要协调好了这个通行证的格式和一些相关的问题就可以了。而朋友的情况似乎也没有那么复杂，他原来的项目也是用.NET平台技术的。.NET平台下是否有比较好的整合解决方案呢？<IMG src="http://www.cnblogs.com/Emoticons/72_72.gif"><BR><BR>
<HR id=null>

<P></P>
<P>这自然涉及到了.NET平台下验证的相关问题了。ASP.NET自身已经支持三种验证方式（不包括None）：<BR>1. Windows身份验证，新建立一个Web应用，似乎缺省就是用这样的方式的。显然这个不是需要的。<BR>2. Passprot身份验证，需要Microsoft支持，它其实提供了一个WebServices来帮助你统一完成验证工作，使&nbsp;&nbsp; 用这个在内部 网项目中似乎没有太大必要。<BR>3. Forms身份验证，通过Cookie来传递身份验证信息，看起来类似通行证之类的，应该是要找的东西了。</P>
<P>图是Forms身份验证的数据流程图（MSDN中的）<BR></P>
<P align=center><IMG height=481 src="http://www.cnblogs.com/images/cnblogs_com/windsails/Forms.JPG" width=452 border=0></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上图十分清晰的描述了Forms身份验证的基本原理，但是对于多个应用呢？仔细查MSDN（MSDN真的好多资料啊，经常看过了再想翻回去已经忘记在那里找出来的了 <IMG src="http://www.cnblogs.com/Emoticons/cry_smile.gif">&nbsp; BTW：有没有MSDN书签功能的？），发现相关的描述很多，但只有一个&#8220;跨应用程序进行Forms 身份验证&#8221;比较具体，而内容就简单些了。</P>
<P>看来还是需要自己先动手做个简单的测试来边试边查资料了<IMG src="http://www.cnblogs.com/Emoticons/shades_smile.gif"><IMG src="http://www.cnblogs.com/Emoticons/shades_smile.gif"><IMG src="http://www.cnblogs.com/Emoticons/shades_smile.gif">...</P>
<P>
<HR id=null>
<BR>先建立一个<FONT color=#ff0000>testLogon的Web应用<BR></FONT>主要文件包括：<BR><FONT color=#0000ff>default.aspx （通过验证跳入的页面）<BR>test1.apsx&nbsp;&nbsp; （登录的页面）<BR>Global.asax&nbsp; <BR>Web.config&nbsp;&nbsp; （配置文件）</FONT> 
<P></P>
<P>再建立另外一个<FONT color=#ff0000>testLogon2的Web应用<BR></FONT>主要文件：<BR><FONT color=#0000ff>default.aspx （通过验证跳入的页面）<BR>Global.asax<BR>Web.config&nbsp;&nbsp;&nbsp; （配置文件）</FONT></P>
<P>
<HR id=null>
<BR>测试最终达到的效果：<BR>两个Web应用的default都是受保护的，没有通过验证是不可以进入的，即使在输入访问地址URL，会自动跳转到testLogon\test1.aspx要求登录，当登录通过后，则可以任意在两个应用的default.aspx跳转。<BR>testLogon\default.aspx中有Logout的功能，Logout后则需要重新登录了。<BR>
<HR id=null>

<P></P>
<P>要达到这个效果，基本设置需要：<BR>1.将IIS配置为允许匿名访问，保证可以通过IIS来控制传递请求给ASP.NET；<BR>2.如果必要传输过程配置为SSL，这里没有这个必要了；<BR>3.对应的两个应用的配置文件必须设成一致；</P>
<P>以上这些基本设置在MSDN中都可以找到相关的描述，但是实验这个效果到成功却花费了比预计长的时间，因此觉得十分有必要将其记录下来，对自己对他人都有好处。</P>
<P>得到的经验教训如下：<BR>1.配置文件Web.config中,将验证模式设为Forms，而且在下面的参数中，要保证两边一致<BR>testLogon的Web.config对应部分<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">authentication&nbsp;</SPAN><SPAN style="COLOR: #ff0000">mode</SPAN><SPAN style="COLOR: #0000ff">="Forms"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">forms&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">=".AspNetForums"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;protection</SPAN><SPAN style="COLOR: #0000ff">="Encryption"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;timeout</SPAN><SPAN style="COLOR: #0000ff">="60"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;loginUrl</SPAN><SPAN style="COLOR: #0000ff">="test1.aspx"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">authentication</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P>testLogon2的Web.config对应部分<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">authentication&nbsp;</SPAN><SPAN style="COLOR: #ff0000">mode</SPAN><SPAN style="COLOR: #0000ff">="Forms"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">forms&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">=".AspNetForums"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;protection</SPAN><SPAN style="COLOR: #0000ff">="Encryption"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;timeout</SPAN><SPAN style="COLOR: #0000ff">="60"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;loginUrl</SPAN><SPAN style="COLOR: #0000ff">="\testLogon\test1.aspx"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">authentication</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P><BR>2.&lt;machineKey&gt;的增加是必须的<BR>为保证两边两边应用对cookie的处理和读取一致，这个属性是必须的，且要相同<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">machineKey<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #ff0000">validationKey</SPAN><SPAN style="COLOR: #0000ff">=&nbsp;"C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decryptionKey</SPAN><SPAN style="COLOR: #0000ff">=&nbsp;"8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validation</SPAN><SPAN style="COLOR: #0000ff">="SHA1"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">machineKey</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P><BR><BR>3.<FONT color=#ff0000>MSDN虽然要查，但不可以完全依靠</FONT><FONT color=#ff0000>，特别是代码<BR></FONT>在MSDN中，关于machineKey的代码如下：<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">configuration</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">system</SPAN><SPAN style="COLOR: #ff0000">.web</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">authentication</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">forms&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">=".ASPXAUTH"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loginUrl</SPAN><SPAN style="COLOR: #0000ff">="logon.aspx"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protection</SPAN><SPAN style="COLOR: #0000ff">="all"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;&nbsp;&lt;!--&nbsp;Protection&nbsp;must&nbsp;be&nbsp;identical.--</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeout="30"&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path="/"&nbsp;&gt;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">&lt;!--</SPAN><SPAN style="COLOR: #008000">&nbsp;Path&nbsp;must&nbsp;have&nbsp;a&nbsp;compatible&nbsp;scope.</SPAN><SPAN style="COLOR: #008000">--&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">authentication</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">&lt;!--</SPAN><SPAN style="COLOR: #008000">&nbsp;Validation&nbsp;and&nbsp;decryption&nbsp;keys&nbsp;must&nbsp;exactly&nbsp;match&nbsp;and&nbsp;cannot<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;set&nbsp;to&nbsp;"AutoGenerate".&nbsp;The&nbsp;validation&nbsp;algorithm&nbsp;must&nbsp;also&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;the&nbsp;same.&nbsp;</SPAN><SPAN style="COLOR: #008000">--&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">machineKey</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validationKey=&nbsp;"C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decryptionKey=&nbsp;"8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;validation="SHA1"<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isolateApplications="false"<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">machineKey</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">system.web</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">configuration</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P>&nbsp;</P>
<P>但显然有着错误的，大家编译一下就知道了，格式错了，而且isolateApplication也不是这样用的</P>
<P>4.为保证两边读到的cookie一致，不要用isolateApplication，它使得各自用自己的cookie了。</P>
<P>5.关于Global.asax的注意，对于Web.config中authentication的节点会触发Global.asax中的事件的，对应</P>
<P>函数是<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">protected</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Application_AuthenticateRequest(Object&nbsp;sender,&nbsp;EventArgs&nbsp;e)<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P><BR>6.研究一下ASPdotNetForum2.0代码发现，Global.asax不见了，而在它的配置文件中多了一项<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">httpModules</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">add&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="AspNetForums"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;type</SPAN><SPAN style="COLOR: #0000ff">="AspNetForums.ForumsHttpModule,&nbsp;AspNetForums.Components"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">httpModules</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P><BR>是的，看一下ForumsHttpModule的源码，结构和Global.asax基本一样，一样有个事件触发函数<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Application_AuthenticateRequest(Object&nbsp;source,&nbsp;EventArgs&nbsp;e)&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面不用我多说了吧？具体该如何做到和dotNetForum一起达到SSO的目标的答案已经出来了 <IMG src="http://www.cnblogs.com/Emoticons/tongue_smile.gif"><BR><BR>
<P><A href="http://www.cnblogs.com/Files/windsails/testLogon.rar">例子代码下载 </A><BR>&nbsp;</P><img src ="http://www.cnblogs.com/windsails/aggbug/52818.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42956/" target="_blank">[新闻]携程范敏：CEO从接发传真做起</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Server的Transfer和Response的Redirect</title><link>http://www.cnblogs.com/windsails/archive/2004/09/30/48147.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Thu, 30 Sep 2004 03:54:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/09/30/48147.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/48147.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/09/30/48147.html#Feedback</comments><slash:comments>23</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/48147.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/48147.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在实现页面跳转的时候，有些人喜欢用Response.Redirect，而有些人则喜欢用Server.Transfer。大部分时间似乎这两种方法都可以实现相同的功能，那究竟有区别吗？</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查了些文档，发现两者区别还是很明显的。根本上，Response是叫浏览器去重新转向到指定的网页，而Server自然是发生在服务器端为主了，因此会有以下区别：<BR><BR>1. Server.Transfer只能够转跳到本地虚拟目录指定的页面，而Response.Redirect则十分灵活；<BR>2. Server.Transfer可以将页面参数方便传递到指定页面；<BR>3. 使用时，Server.Transfer跳到别的页面后，浏览器显示的地址不会改变，有时反而会造成误会，当然也有些场合需要这样的效果；<BR>4. Server.Transfer可以减少客户端对服务器的请求；</P>
<P>暂时想到只是这些，是否还有其它？<IMG src="http://www.cnblogs.com/Emoticons/72_72.gif"><IMG src="http://www.cnblogs.com/Emoticons/72_72.gif"><IMG src="http://www.cnblogs.com/Emoticons/72_72.gif"><BR></P><img src ="http://www.cnblogs.com/windsails/aggbug/48147.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42955/" target="_blank">[新闻]2008年10月13日科技博客精选</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>FreeTextBox实现机制</title><link>http://www.cnblogs.com/windsails/archive/2004/09/27/47143.html</link><dc:creator>风前絮~~</dc:creator><author>风前絮~~</author><pubDate>Mon, 27 Sep 2004 06:41:00 GMT</pubDate><guid>http://www.cnblogs.com/windsails/archive/2004/09/27/47143.html</guid><wfw:comment>http://www.cnblogs.com/windsails/comments/47143.html</wfw:comment><comments>http://www.cnblogs.com/windsails/archive/2004/09/27/47143.html#Feedback</comments><slash:comments>29</slash:comments><wfw:commentRss>http://www.cnblogs.com/windsails/comments/commentRss/47143.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/windsails/services/trackbacks/47143.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 刚开始试用FTB2.0的时候，感觉FTB真的很神，居然可以在网页状态实现编辑过程的What you see is what you get。看完FTB的文档（其实也不是很多的东西，估计就是用个NDOC或者什么类似的工具生成的SDK文档）又仔细试做了几个程序，觉得FTB的实现思路不复杂，但十分巧妙。它通过FTB这个中间部件将客户端（浏览器）的程序（javascript代码）和后台程序（C#写的aspx等ASP.NET代码）紧密结合，从而实现了这种所见即所得的效果。</P>
<P>FTB的结构主要有三个命名空间组成：<BR>FreeTextBoxControls，FreeTextBoxControls.Design和FreeTextBoxControls.Support。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用得最多的是FreeTextBoxControls，基本上用到的界面部件都来自于这里，例如ToolBar上每个功能Button可以在这里找到映射，而每个Button又对应着javascrip中的一个函数功能。<BR><BR>例如：下划线这个功能，有个Underline的类（继承于ToolbarButton）实现，而这个类实际调用客户端的一段javascript代码FTB_Underline（在FreeTextBox-ToolbarItemsSrcipt.js中）。<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">function</SPAN><SPAN style="COLOR: #000000">&nbsp;FTB_Underline(ftbName)&nbsp;{&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;FTB_Format(ftbName,'underline');&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果再深究下去，仔细跟踪下这段js的代码又可以它调用FTB_Format这段代码（在FreeTextBox-MainScript.js中）。<BR></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">function</SPAN><SPAN style="COLOR: #000000">&nbsp;FTB_Format(ftbName,commandName)&nbsp;{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;editor&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;FTB_GetIFrame(ftbName);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(FTB_IsHtmlMode(ftbName))&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;editor.focus();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;editor.document.execCommand(commandName,'',</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>}<BR><IMG src