﻿<?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>博客园-二十四画生的Blog</title><link>http://www.cnblogs.com/esshs/</link><description>——开始学习MVC框架</description><language>zh-cn</language><lastBuildDate>Sun, 05 Jul 2009 21:58:21 GMT</lastBuildDate><pubDate>Sun, 05 Jul 2009 21:58:21 GMT</pubDate><ttl>60</ttl><item><title>在ASP.Net MVC框架下使用富文本编辑器（FCKEditor，更新至：v1.0.1）</title><link>http://www.cnblogs.com/esshs/archive/2008/12/03/1346326.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Wed, 03 Dec 2008 03:43:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2008/12/03/1346326.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/1346326.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2008/12/03/1346326.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/1346326.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/1346326.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;学了一段时间的ASP.Net MVC框架，想用ASP.Net MVC框架做一个Blog的小程序。找了半天也没有找到一个好用的可以直接在MVC框架下调用的好富文本编辑器。也许可以直接在MVC框架中引用原来asp.net webform的一些组件，不过总感觉不大舒服，所以计划自己动手写一个。我首先想到了FCKEditor，它其实是一个与平台无关的富文本编辑器，他可以在java，asp，asp.net webform环境下运行，当然也可以在ASP.Net MVC框架下使用。今天自己动手试了一下发现效果不错<img alt="" src="http://www.cnblogs.com/Emoticons/msn/teeth_smile.gif" />&nbsp;</p>
<p><img height="482" alt="" src="http://www.cnblogs.com/images/cnblogs_com/esshs/mvcfckeditor.jpg" width="698" border="0" />&nbsp;</p>
<p>Fck编辑器的大部分功能都是客户端js脚本完成的，唯一需要和服务器端交互的部分就是从服务器上浏览文件并上传文件了，我也基于MVC框架弄了一个浏览文件的页面。</p>
<p><img height="325" alt="" src="http://www.cnblogs.com/images/cnblogs_com/esshs/mvcfckeditor02.jpg" width="798" border="0" /></p>
<p>下载地址：<a href="http://www.cnblogs.com/Files/esshs/MvcFckEditor.rar">MvcFckEditor.rar</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（目前只是初步实现了功能，希望大家多提反馈意见）</p>
<p>使用方法：</p>
<p>1、首先将压缩包中的所有文件复制到你的MVC应用程序的根目录下。</p>
<p>2、在要使用FCK编辑器的页面上添加：&lt;script type="text/javascript" src="/fckeditor2.3.6/fckeditor.js"&gt;&lt;/script&gt;</p>
<p>3、在要使用FCK编辑器的位置用HtmlHelper的一个扩展方法就可以调用了。（可以在VS2008下获得编辑器的提示还是很方便的）<br />
&lt;%=Html.FckEditor("FCKTextBox") %&gt;</p>
<p>它有三个重载：</p>
<p>public static string FckEditor(this HtmlHelper html, string name);<br />
public static string FckEditor(this HtmlHelper html, string name, FckConfig objFckConfig);<br />
public static string FckEditor(this HtmlHelper html, string name, string value, FckConfig objFckConfig);</p>
<p>name：就是这个控件的名字了，和其他html控件一样。你可以在后台用Request.Form["name"]来获取值。</p>
<p>objFckConfig：是我定义Fck属性配置类，里面包括常用的 长、宽、高、皮肤、样式。（目前只能定义这几项以后会扩展更多的配置属性，这样应用起来就更灵活了）如果不配置则取默认值。</p>
<p>&lt;%=Html.FckEditor("FCKTextBox", new FckConfig { Width="600", Height="500", Skin= FckSkin.Office2003, ToolbarSet= FckToolbarSet.Basic })%&gt;</p>
<p>value：就是这个控件的值了，你可以指定这个值，如果不指定则默认取同名的ViewData中的值，这个就和其它HtmlHelper类似了。</p>
<p><strong>关于上传文件位置的控制：</strong></p>
<p>默认上传文件全部上传到<font color="#0000ff">"</font><span style="color: #0000ff">网站跟目录/userfiles&#8221;<span style="color: #000000"><span style="color: #000000">目</span>录下，如果大家在程序中引用MvcFckEditor.dll，并实现MvcFckEditor.Components.FckProvider这个抽象类中的GetUserFilesPath方法，大家就可以自己定义上传路径了。如：</span></span>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_100858" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_100858').style.display='none'; document.getElementById('Code_Open_Image_100858').style.display='inline'; document.getElementById('Code_Open_Text_100858').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_100858" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_100858').style.display='none'; getElementById('Code_Closed_Image_100858').style.display='inline'; getElementById('Code_Closed_Text_100858').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_100858">TestFckProvider</span><span id="Code_Open_Text_100858" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;McvTest.Provider<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TestFckProvider&nbsp;:&nbsp;FckProvider<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">实现不同的用户上传文件到不同的目录</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">override</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;GetUserFilesPath()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpContext&nbsp;context&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;HttpContext.Current;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(context.User&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;context.User.Identity&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;context.User.Identity.IsAuthenticated)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">当然我需要在这里对用户名是否符合文件夹规则做个判断，这里只是一个例子，大家可以用用户ID或其他方法实现</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">/userfiles/</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;context.User.Identity.Name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">/userfiles/Anonymous</span><span style="color: #800000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></span></div>
<p>&nbsp;然后我们需要在Web.config中配置一下，在appSettings节点中新增：</p>
<p>&nbsp;&nbsp; &lt;appSettings&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;add key="FckProvider" value="McvTest.Provider.TestFckProvider, McvTest"/&gt;<br />
&nbsp; &lt;/appSettings&gt;</p>
<p>以后我会定义更多的抽象方法来实现更灵活的配置，如：判断用户当前是否可以上传文件，可以上传那些类型的文件，可以上传多大的文件，等等。。。</p>
<p>这样我们的程序就可以运行了，大家在使用中有什么建议和问题，都请留言，我将会继续改进这个MvcFckEditor的功能的。</p>
<p>&nbsp;演示用例下载：<a href="http://www.cnblogs.com/Files/esshs/McvTest.rar" target="_blank">MvcTest</a></p>
<p>&nbsp;</p>
<p><span style="color: red">&nbsp;v1.0.1更新</span>，修正由于没有转义回车换行符而照成的js错误问题。</p>
<p>&nbsp;<a href="http://www.cnblogs.com/Files/esshs/MvcFckEditor.dll.rar">MvcFckEditor.dll.rar</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(仅更新了dll，大家下载<a href="http://www.cnblogs.com/Files/esshs/MvcFckEditor.rar">MvcFckEditor.rar</a>后更新这个dll就可以了)</p>
<p>&nbsp;</p>
<img src ="http://www.cnblogs.com/esshs/aggbug/1346326.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47989/" target="_blank">Twitter无处不在 魔兽世界Twitter发送器插件发布</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>一个在ASP.NET MVC框架下开发的留言本示例(1)</title><link>http://www.cnblogs.com/esshs/archive/2008/11/26/1341452.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Wed, 26 Nov 2008 07:08:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2008/11/26/1341452.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/1341452.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2008/11/26/1341452.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/1341452.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/1341452.html</trackback:ping><description><![CDATA[<p>刚刚学了几天的MVC框架自己也试着做了一个留言本的示例小程序，初步的了解了一下MVC框架的功能。通过这个示例了解了MVC框架中的几个有用的东西。</p>
<p>1、HandleErrorAttribute（MVC框架内置的页面错误处理Filter）</p>
<p>这个内置的处理错误的功能很简单，只能在当页面出现错误的时候把错误信息收集起来，并显示友好的错误提示的View(需要在web.congfig中配置是否启用友好错误提示的customErrors节点)。在用ASP.NET MVC 框架模板创建web应用程序时会自动生成一个\Shared\Error.aspx的View。但是这个默认的错误处理功能没有实现对错误日志的记录，所以我们可以通过继承HandleErrorAttribute，来实现自己的MyHandleError。</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_142118" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_142118').style.display='none'; document.getElementById('Code_Open_Image_142118').style.display='inline'; document.getElementById('Code_Open_Text_142118').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" height="16"><img id="Code_Open_Image_142118" style="display: none;" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_142118').style.display='none'; getElementById('Code_Closed_Image_142118').style.display='inline'; getElementById('Code_Closed_Text_142118').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" height="16"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_142118">MyHandleError</span><span id="Code_Open_Text_142118" style="display: none;"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;MyHandleError&nbsp;:&nbsp;HandleErrorAttribute<br />
</span><span style="color: #008080;">&nbsp;2</span><span style="color: #000000;"><img id="Codehighlighter1_58_1245_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_58_1245_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_58_1245_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_58_1245_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_58_1245_Closed_Image" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_58_1245_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_58_1245_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_58_1245_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_58_1245_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_58_1245_Open_Text"><span style="color: #000000;">{<br />
</span><span style="color: #008080;">&nbsp;3</span><span style="color: #000000;"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">重写错误处理方法</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;4</span><span style="color: #008000;"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">override</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;OnException(ExceptionContext&nbsp;filterContext)<br />
</span><span style="color: #008080;">&nbsp;5</span><span style="color: #000000;"><img id="Codehighlighter1_160_303_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_160_303_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_160_303_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_160_303_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_160_303_Closed_Image" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_160_303_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_160_303_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_160_303_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_160_303_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_160_303_Open_Text"><span style="color: #000000;">{<br />
</span><span style="color: #008080;">&nbsp;6</span><span style="color: #000000;"><img alt="" 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: #008000;">//</span><span style="color: #008000;">记录错误日志</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;7</span><span style="color: #008000;"><img alt="" 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;">this</span><span style="color: #000000;">.AddLog(filterContext);<br />
</span><span style="color: #008080;">&nbsp;8</span><span style="color: #000000;"><img alt="" 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: #008000;">//</span><span style="color: #008000;">调用基类的错误处理功能</span><span style="color: #008000;"><br />
</span><span style="color: #008080;">&nbsp;9</span><span style="color: #008000;"><img alt="" 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;">base</span><span style="color: #000000;">.OnException(filterContext);<br />
</span><span style="color: #008080;">10</span><span style="color: #000000;"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
</span><span style="color: #008080;">11</span><span style="color: #000000;"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080;">12</span><span style="color: #000000;"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;AddLog(ExceptionContext&nbsp;filterContext)<br />
</span><span style="color: #008080;">13</span><span style="color: #000000;"><img id="Codehighlighter1_372_1239_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_372_1239_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_372_1239_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_372_1239_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_372_1239_Closed_Image" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_372_1239_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_372_1239_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_372_1239_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_372_1239_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_372_1239_Open_Text"><span style="color: #000000;">{<br />
</span><span style="color: #008080;">14</span><span style="color: #000000;"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DirectoryInfo&nbsp;objDirectory&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;DirectoryInfo(filterContext.HttpContext.Server.MapPath(</span><span style="color: #800000;">"</span><span style="color: #800000;">~/Log</span><span style="color: #800000;">"</span><span style="color: #000000;">));<br />
</span><span style="color: #008080;">15</span><span style="color: #000000;"><img alt="" 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;(</span><span style="color: #000000;">!</span><span style="color: #000000;">objDirectory.Exists)<br />
</span><span style="color: #008080;">16</span><span style="color: #000000;"><img id="Codehighlighter1_535_589_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_535_589_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_535_589_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_535_589_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_535_589_Closed_Image" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_535_589_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_535_589_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_535_589_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_535_589_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_535_589_Open_Text"><span style="color: #000000;">{<br />
</span><span style="color: #008080;">17</span><span style="color: #000000;"><img alt="" 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;objDirectory.Create();<br />
</span><span style="color: #008080;">18</span><span style="color: #000000;"><img alt="" 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 />
</span><span style="color: #008080;">19</span><span style="color: #000000;"><img alt="" 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;_logFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DateTime.Now.ToString(</span><span style="color: #800000;">"</span><span style="color: #800000;">yyyyMM</span><span style="color: #800000;">"</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">.log</span><span style="color: #800000;">"</span><span style="color: #000000;">;<br />
</span><span style="color: #008080;">20</span><span style="color: #000000;"><img alt="" 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;_logFullName&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Path.Combine(objDirectory.FullName,&nbsp;_logFile);<br />
</span><span style="color: #008080;">21</span><span style="color: #000000;"><img alt="" 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;(</span><span style="color: #000000;">!</span><span style="color: #000000;">File.Exists(_logFullName))<br />
</span><span style="color: #008080;">22</span><span style="color: #000000;"><img id="Codehighlighter1_799_901_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_799_901_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_799_901_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_799_901_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_799_901_Closed_Image" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_799_901_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_799_901_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_799_901_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_799_901_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_799_901_Open_Text"><span style="color: #000000;">{<br />
</span><span style="color: #008080;">23</span><span style="color: #000000;"><img alt="" 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;FileStream&nbsp;fs&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;File.Create(_logFullName);<br />
</span><span style="color: #008080;">24</span><span style="color: #000000;"><img alt="" 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;fs.Close();<br />
</span><span style="color: #008080;">25</span><span style="color: #000000;"><img alt="" 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 />
</span><span style="color: #008080;">26</span><span style="color: #000000;"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br />
</span><span style="color: #008080;">27</span><span style="color: #000000;"><img alt="" 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;">using</span><span style="color: #000000;">&nbsp;(StreamWriter&nbsp;sw&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StreamWriter(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileStream(_logFullName,&nbsp;FileMode.Append,&nbsp;FileAccess.Write)))<br />
</span><span style="color: #008080;">28</span><span style="color: #000000;"><img id="Codehighlighter1_1035_1229_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1035_1229_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1035_1229_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1035_1229_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_1035_1229_Closed_Image" style="display: none;" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1035_1229_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1035_1229_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1035_1229_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_1035_1229_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_1035_1229_Open_Text"><span style="color: #000000;">{<br />
</span><span style="color: #008080;">29</span><span style="color: #000000;"><img alt="" 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;sw.WriteLine(DateTime.Now.ToString()&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">\t</span><span style="color: #800000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;filterContext.Exception.Message);<br />
</span><span style="color: #008080;">30</span><span style="color: #000000;"><img alt="" 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;sw.WriteLine(</span><span style="color: #800000;">"</span><span style="color: #800000;">StackTrace:</span><span style="color: #800000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;filterContext.Exception.StackTrace);<br />
</span><span style="color: #008080;">31</span><span style="color: #000000;"><img alt="" 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 />
</span><span style="color: #008080;">32</span><span style="color: #000000;"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
</span><span style="color: #008080;">33</span><span style="color: #000000;"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br />
</span><span style="color: #008080;">34</span><span style="color: #000000;"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span></span></div>
<p>&nbsp;当然我们还可以近一部增强这一部分的处理功能，比如将错误信息格式化的存入到一个xml文件中或者数据库中，这样我们就可以实现更多对错误日志进行分析和处理的方法了。</p>
<p>2、IModelBinder（对复杂类型的内置模型绑定器接口）</p>
<p>通过实现这个接口我可以在提交表单的时候用，这样的代码来接收我们提交过来的数据，如：</p>
<p>public ActionResult UserSave(User objUser)</p>
<p>这个接口就相当于实现了一个由表单数据到业务对象数据的一个转换。这样可以使得Controller中的代码更简洁更清晰。</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_145134" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_145134').style.display='none'; document.getElementById('Code_Open_Image_145134').style.display='inline'; document.getElementById('Code_Open_Text_145134').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" height="16"><img id="Code_Open_Image_145134" style="display: none;" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_145134').style.display='none'; getElementById('Code_Closed_Image_145134').style.display='inline'; getElementById('Code_Closed_Text_145134').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" height="16"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_145134">UserBinder</span><span id="Code_Open_Text_145134" style="display: none;"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;UserBinder&nbsp;:&nbsp;IModelBinder<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;ModelBinderResult&nbsp;BindModel(ModelBindingContext&nbsp;bindingContext)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;objUser&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;User();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;bindingContext.HttpContext.Request.Form;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objUser.UserID&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Convert.ToInt32(form[</span><span style="color: #800000;">"</span><span style="color: #800000;">UserID</span><span style="color: #800000;">"</span><span style="color: #000000;">]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objUser.Username&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;form[</span><span style="color: #800000;">"</span><span style="color: #800000;">Username</span><span style="color: #800000;">"</span><span style="color: #000000;">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objUser.Email&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;form[</span><span style="color: #800000;">"</span><span style="color: #800000;">Email</span><span style="color: #800000;">"</span><span style="color: #000000;">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objUser.Password&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;FormsAuthentication.HashPasswordForStoringInConfigFile(form[</span><span style="color: #800000;">"</span><span style="color: #800000;">Password</span><span style="color: #800000;">"</span><span style="color: #000000;">],&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">sha1</span><span style="color: #800000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objUser.CreatedDate&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;DateTime.Now;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ModelBinderResult&nbsp;objR&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ModelBinderResult(objUser);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;objR;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span></span></div>
<p>&nbsp;要使用这个绑定器，我们就需要先注册它，关于如何注册和更详细的使用方法可以看<a href="http://blog.joycode.com/scottgu/archive/2008/09/08/115258.aspx" target="_blank">这篇文章</a>的内容。</p>
<p>3、Html.DropDownList（用于生成select的辅助方法）</p>
<p>该方法一个重要的参数就是SelectList，它相当于DropDownList的数据源。我们可以指定这个DropDownList的value和text还可以指定他的当前选中项，如：</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_150026" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_150026').style.display='none'; document.getElementById('Code_Open_Image_150026').style.display='inline'; document.getElementById('Code_Open_Text_150026').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" height="16"><img id="Code_Open_Image_150026" style="display: none;" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_150026').style.display='none'; getElementById('Code_Closed_Image_150026').style.display='inline'; getElementById('Code_Closed_Text_150026').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" height="16"><span class="cnblogs_code_Collapse" id="Code_Closed_Text_150026">定义一个SelectList</span><span id="Code_Open_Text_150026" style="display: none;"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;SelectList&nbsp;PageArray<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">get</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ArrayList&nbsp;arr&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;ArrayList();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #800080;">1</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;PageCount;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr.Add(</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;{&nbsp;text&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.Format(</span><span style="color: #800000;">"</span><span style="color: #800000;">第{0}页</span><span style="color: #800000;">"</span><span style="color: #000000;">,&nbsp;i),&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;i&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SelectList(arr,&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">value</span><span style="color: #800000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">text</span><span style="color: #800000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.PageIndex);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span></span></div>
<p>我们在前台页面上就可以这样引用&lt;%=Html.DropDownList("Page", this.PageArray)%&gt;</p>
<p>以上所有代码都是基于ASP.NET MVC Beta版的，目前示例代码还不完善，没有权限判断上的内容，以后有心得后再继续完善。</p>
<p>点击<a href="http://www.cnblogs.com/Files/esshs/20081126_MvcGuestBook.zip">这里</a>可以下载本示例代码。</p>
<p>&nbsp;</p>
<p>&nbsp;</p> <img src ="http://www.cnblogs.com/esshs/aggbug/1341452.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47988/" target="_blank">Firefox 3.5匆忙推出漏洞多 Mozilla本月将更新</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>初始ASP.NET MVC框架</title><link>http://www.cnblogs.com/esshs/archive/2008/11/26/1341348.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Wed, 26 Nov 2008 05:39:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2008/11/26/1341348.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/1341348.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2008/11/26/1341348.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/1341348.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/1341348.html</trackback:ping><description><![CDATA[<p>刚刚接触了几天ASP.NET MVC框架，发现它和原来asp.net的web form模型相比，生成的Html代码更加整洁了，没有了viewstate。前台页面中的代码有点像asp，但是可以把逻辑处理部分写在其他的代码文件中，前台只负责展现。</p>
<p><strong>MVC框架的工作流程</strong>（摘自Scott Guthrie的博客）</p>
<p>MVC是个将一个应用的实现分成三个组件角色的框架技术：模型，视图和控制器。</p>
<p><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/esshs/step0.jpg" border="0" /><br />
<br />
在基于MVC的应用里，Model(模型)是负责保持状态的应用组件。这个状态通常都持久于数据库之中（譬如，我们也许会有一个Product（产品）类用来代表SQL中的Products数据表中的订单数据)。 <br />
在基于MVC的应用里，View(视图)是负责显示用户界面的组件。这个UI通常是使用模型数据来创建的（譬如，我们也许会生成一个Product"编辑"视图，根据当前Product对象的状态，显示文本框，下拉框和复选框等)。 <br />
在基于MVC的应用里，Controller(控制器)是处理用户交互，操作模型和最终选择用哪个视图来显示UI的组件。在MVC应用中，视图只是用来显示信息而已，是控制器来处理和回应用户的输入和交互的。 <br />
<br />
<strong></strong></p>
<p><strong>实用链接：</strong></p>
<p><a href="http://www.asp.net/mvc/">http://www.asp.net/mvc/</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提供最新的MVC框架下载，提供教程及示例</p>
<p><a href="http://www.codeplex.com/aspnet">http://www.codeplex.com/aspnet</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提供最新的MVC框架源码下载</p>
<p>ASP.NET MVC框架开发系列课程：</p>
<p><a href="http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Series/MVC.aspx">http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/Series/MVC.aspx</a>&nbsp; </p>
<p><a href="http://aspnetmvc.cnblogs.com/">http://aspnetmvc.cnblogs.com/</a>&nbsp; ASP.NET MVC团队（博客园）</p>
<p><a href="http://blog.joycode.com/scottgu/">http://blog.joycode.com/scottgu/</a>&nbsp;&nbsp; Scott Guthrie 博客中文版（.NET之父的blog，了解.net发展的最新动向，当然也包括ASP.NET MVC的）</p>
<p><br />
&nbsp;</p>
<img src ="http://www.cnblogs.com/esshs/aggbug/1341348.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47988/" target="_blank">Firefox 3.5匆忙推出漏洞多 Mozilla本月将更新</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>给DNN网站加速</title><link>http://www.cnblogs.com/esshs/archive/2008/11/20/1337481.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Thu, 20 Nov 2008 05:20:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2008/11/20/1337481.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/1337481.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2008/11/20/1337481.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/1337481.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/1337481.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接触DNN已经有好几年了，用它做项目也有好几年了。用DNN做网站的最大好处就是快，方便调整页面布局样式，方便扩充功能。但是它也有一个致命的弱点就是访问速度慢。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;根据项目实践经验我发现影响访问速度的瓶颈其实不在web服务器上而是在数据库服务器上。在大并发访问量的情况下，数据库服务器的压力很大，CPU的占用率都在80%以上。有大量的请求都被阻塞，往往一个请求都需要等待1-2秒中才会被执行。知道了瓶颈问题，我们就可以从以下几个方面入手修改了。</p>
<p>1、优化数据量在20万条上的表结构的索引，加快单个select的查询速度</p>
<p>2、优化sql语句的写法。</p>
<p>3、对超大数据量的表，有必要的要进行分表处理。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;进行了以上调整后对sql执行这一块就会加快不少了。但是对于sql的请求并没有减少。浏览一个dnn页面往往要执行很多sql语句。有模块级有框架级的，要减少这方面的sql请求量，我们就需要从dnn的缓存下手了。</p>
<p>1、首先在&#8220;主机管理--&gt;主机设置&#8221;中的缓存置中</p>
<p><img height="141" alt="" src="http://www.cnblogs.com/images/cnblogs_com/esshs/20081120.gif" width="463" border="0" /></p>
<p>基本上用默认设置就可以了，这样就可以解决框架级sql请求量，主要是tabinfo等。</p>
<p>2、在模块的模块设置中，设置合理的缓存时间就可以减少模块级的sql请求</p>
<p><img height="76" alt="" src="http://www.cnblogs.com/images/cnblogs_com/esshs/20081120-1.gif" width="553" border="0" /></p>
<p>只要是不经常变更的模块都可以设置这个缓存时间。它的原理是将这个模块生成的html缓存到一个文件或内存中去。<br />
这样在页面载入的时候系统就会直接将这段缓存中的html展现出来而不会去调用具体的模块，从而这些模块中的种种sql请求都不会去执行了。</p>
<p>做了以上的优化后，就可以减轻不少数据库服务器的访问压力了。</p>
<p>接下来我们在从数据传输入手进一步的进行加速。</p>
<p>首先，我们在编写模块的时候，应该尽量的减少html代码量。关掉不必要的VIEWSTATE。</p>
<p>其次，DNN也为我们提供了一个Gzip压缩的功能，我可以在&#8220;主机管理--&gt;主机设置&#8221;中启用它。</p>
<p><img height="36" alt="" src="http://www.cnblogs.com/images/cnblogs_com/esshs/20081120-2.gif" width="392" border="0" /></p>
<p>除此之外DNN还有几个功能，如果大家不需要可以将它关掉，这样也有助于提高性能。</p>
<p>1、日志功能。DNN中EventLog这个表的数据增长量是相当大的。如果大家不需要可以关掉它</p>
<p>在&#8220;Admin &gt; Event Viewer&#8221;下，编辑日志设置。</p>
<p><img height="319" alt="" src="http://www.cnblogs.com/images/cnblogs_com/esshs/20081120-41.gif" width="404" border="0" />&nbsp;</p>
<p>以上就是这些错误类型，大家根据需要该关的就关。这样可以减少不少数据库的访问。</p>
<p>另外我们也可以在web.config中设置日记录的方式，如下图：</p>
<p><img height="96" alt="" src="http://www.cnblogs.com/images/cnblogs_com/esshs/20081120-5.gif" width="364" border="0" /></p>
<p>选用XMLLoggingProvider记录日志，它会把日志信息存储到xml文件中，这样也可减少数据库的访问。</p>
<p>2、日程调度中的编录索引功能。大家都知道DNN的搜索对中文索引不能很好的支持。所以既然他索引没有作用，那么还不如关掉它。</p>
<p>在&#8220;Host &gt; Schedule&#8221;中</p>
<p><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/esshs/20081120-6.gif" border="0" /></p>
<p>关于编录索引我建议大家可以更具DNN中编录索引的原理，加入提取中文分词功能，编写成一个小windows程序，在windows的日程调度中执行。这样既稳定又不会照成web服务器的压力。</p>
<p>总的来说DNN既然也是一个web程序，适用于其他web程序的优化方法和原则也都适用于它。大家有啥好的方法也希望能一起交流一下<img alt="" src="http://www.cnblogs.com/Emoticons/msn/regular_smile.gif" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
 <img src ="http://www.cnblogs.com/esshs/aggbug/1337481.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47987/" target="_blank">预测：Twitter最可能收购的十家公司</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>文章模块2.0正式发布（YongRi - NewsArticles[02.00.00]）</title><link>http://www.cnblogs.com/esshs/archive/2006/11/09/555122.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Thu, 09 Nov 2006 03:45:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/11/09/555122.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/555122.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/11/09/555122.html#Feedback</comments><slash:comments>25</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/555122.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/555122.html</trackback:ping><description><![CDATA[文章模块2.0终于完成了！<br><br>他是一个DNN模块，可以安装在DNN3.2.0以上版本。<br><br>新版本的文章模块支持更丰富的模板功能，您可以更加自由的定制模块样式。<br>新版文章模块还特别加入了新闻采集功能，可以使您录入新闻更加快捷。<br><br>文章模块的下载地址：<a href="http://www.yongri.com.cn/">www.yongri.com.cn</a> <br><br>
<img src ="http://www.cnblogs.com/esshs/aggbug/555122.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47986/" target="_blank">网易澄清:与暴雪合资公司仅提供技术支持</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>DNN模块开发系列文章（7）——用CodeSmith Templates进行编码</title><link>http://www.cnblogs.com/esshs/archive/2006/08/25/485469.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Fri, 25 Aug 2006 07:34:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/08/25/485469.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/485469.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/08/25/485469.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/485469.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/485469.html</trackback:ping><description><![CDATA[摘要: DNN模块开发系列文章的第七篇，介绍CodeSmith Templates进行快速的DNN模块开发。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/08/25/485469.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/485469.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47985/" target="_blank">杰克逊悼念仪式或成史上最大规模Web活动</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>DNN模块开发系列文章（6）——DNN中的通用控件（下）</title><link>http://www.cnblogs.com/esshs/archive/2006/08/14/476847.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Mon, 14 Aug 2006 14:07:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/08/14/476847.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/476847.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/08/14/476847.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/476847.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/476847.html</trackback:ping><description><![CDATA[摘要: DNN模块开发系列文章的第六篇，介绍DNN模块开发中经常用到TextEditor，UrlControl，URLTrackingControl。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/08/14/476847.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/476847.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47984/" target="_blank">《商业周刊》:Mozilla的志愿者开发模式被复制</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>DNN模块开发系列文章（5）——DNN中的通用控件（上）</title><link>http://www.cnblogs.com/esshs/archive/2006/08/13/475903.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Sun, 13 Aug 2006 15:30:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/08/13/475903.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/475903.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/08/13/475903.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/475903.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/475903.html</trackback:ping><description><![CDATA[摘要: DNN模块开发系列文章的第五篇，介绍DNN模块开发中经常用到LabelControl，DualListControl，ModuleAuditControl，SectionHeadControl。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/08/13/475903.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/475903.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47977/" target="_blank">Mono 的Virtual PC 虚拟机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>DNN模块开发系列文章（4）——与模块开发相关的类</title><link>http://www.cnblogs.com/esshs/archive/2006/08/11/474327.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Fri, 11 Aug 2006 07:03:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/08/11/474327.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/474327.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/08/11/474327.html#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/474327.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/474327.html</trackback:ping><description><![CDATA[摘要: DNN模块开发系列文章的第四篇，介绍DNN模块开发常用的类。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/08/11/474327.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/474327.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47970/" target="_blank">19岁天才黑客发布首个iPhone 3GS破解软件</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>DNN模块开发系列文章（3）——在DNN中添加模块定义</title><link>http://www.cnblogs.com/esshs/archive/2006/08/09/471668.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Tue, 08 Aug 2006 16:27:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/08/09/471668.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/471668.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/08/09/471668.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/471668.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/471668.html</trackback:ping><description><![CDATA[摘要: DNN模块开发系列文章的第三篇，介绍在ＤＮＮ中添加模块定义的相关知识。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/08/09/471668.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/471668.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47969/" target="_blank">新浪邮箱大本营粉墨登场！Sina.cn开放注册</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>DNN模块开发系列文章（2）——建立模块开发项目</title><link>http://www.cnblogs.com/esshs/archive/2006/08/03/467028.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Thu, 03 Aug 2006 10:57:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/08/03/467028.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/467028.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/08/03/467028.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/467028.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/467028.html</trackback:ping><description><![CDATA[摘要: DNN模块开发系列文章的第二篇，讲解如何利用DNN Project Templates创建DNN模块项目和各项目文件的作用。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/08/03/467028.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/467028.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47968/" target="_blank">IE市场份额首次跌破60%</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>DNN模块开发系列文章（1）——分析设计</title><link>http://www.cnblogs.com/esshs/archive/2006/08/02/466179.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Wed, 02 Aug 2006 13:02:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/08/02/466179.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/466179.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/08/02/466179.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/466179.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/466179.html</trackback:ping><description><![CDATA[摘要: DNN系列文章的第一篇，通过介绍如何开发一个简单的文章模块，讲解DNN模块开发的相关知识。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/08/02/466179.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/466179.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47965/" target="_blank">Google App Engine宕机6小时——云的安全在哪里？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>DotNetNuke与MemberShip的结合</title><link>http://www.cnblogs.com/esshs/archive/2006/07/13/449888.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Thu, 13 Jul 2006 07:05:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/07/13/449888.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/449888.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/07/13/449888.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/449888.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/449888.html</trackback:ping><description><![CDATA[摘要: 从数据库结构上介绍DotNetNuke与MemberShip的结合&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/07/13/449888.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/449888.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47961/" target="_blank">微软新推社交网站Windows Live Planet</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>发布YongRi - NewsArticles[01.00.01 beta 2]供大家测试</title><link>http://www.cnblogs.com/esshs/archive/2006/04/10/371653.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Mon, 10 Apr 2006 13:41:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/04/10/371653.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/371653.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/04/10/371653.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/371653.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/371653.html</trackback:ping><description><![CDATA[<span class=Forum_NormalBold id=spSubject><span class=Forum_Normal id=spBody>&nbsp;　　看到很多人对文章模块（YongRi - NewsArticles），很感兴趣都想试一下。我决定还是先提供测试版供大家下载（原本打算写好说明书，多做些测试再提供下载的）。目前这个模块实现了不少功能，但肯定还有更多需要完善的地方。如果大家再试用过程中有什么问题和bug欢迎大家反馈，我的会继续改善这个模块，争取让<br>它可以适应全部发布新闻/文章类网站的应用。<br><br><span class=Forum_NormalBold id=spSubject><span class=Forum_Normal id=spBody>&nbsp;　　</span></span>大家可以到我的网站上看看文章管理模块的效果：<a href="http://www.sharednn.com/">www.sharednn.com</a>.，您可以到本站&#8220;<a href="http://www.sharednn.com/Default.aspx?tabid=54"><font color=#002c99>DNN资源</font></a>&#8221;中下载得到它，希望大家能够喜欢这个模块，多提改进意见<img alt="" src="http://www.sharednn.com/Providers/HtmlEditorProviders/DSFCKEditorProvider/FCK2/editor/images/smiley/msn/regular_smile.gif"> <br><br>　　我的网站上只展示了这个模块最基本的功能，该模块其实还有很多功能可以帮助您实现您网站的种种需求，大家如果在使用中有什么问题，可以到本站<a href="http://www.sharednn.com/Default.aspx?tabid=75&amp;forumid=10&amp;scope=threads">论坛</a>中发帖。如果您想如何在您网站上实现新闻/文章发布和管理，也可到这个<a href="http://www.sharednn.com/Default.aspx?tabid=75&amp;forumid=10&amp;scope=threads">论坛</a>上发帖，我看这个版本是否可以实现，如果不能实现将作为下一个版本的改进需求。<br>
<p><font color=#ff0000><br>注：目前这个版本只是测试版，不能保证在后续更新中会因更新数据库而导致您的以前数据不能继续使用。希望大家能注意这一点。</font></p>
</span></span>
<img src ="http://www.cnblogs.com/esshs/aggbug/371653.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47960/" target="_blank">火狐3.5版被指推出太匆忙：存在50多个漏洞</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>FCKEditor在DNN中的心得使用（更新于2006-10-10）</title><link>http://www.cnblogs.com/esshs/archive/2006/04/08/370020.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Sat, 08 Apr 2006 07:26:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/04/08/370020.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/370020.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/04/08/370020.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/370020.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/370020.html</trackback:ping><description><![CDATA[摘要: FCKEditor在DNN中的心得使用，如何改进图片上传功能。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/04/08/370020.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/370020.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47959/" target="_blank">Google对手机搜索进行优化升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>DNN中又一个好用的富文本编辑器（FCKEditor）</title><link>http://www.cnblogs.com/esshs/archive/2006/04/07/369169.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Fri, 07 Apr 2006 04:29:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/04/07/369169.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/369169.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/04/07/369169.html#Feedback</comments><slash:comments>28</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/369169.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/369169.html</trackback:ping><description><![CDATA[摘要: 介绍FCKeditor在DotNetNuke中的使用，并给出如何显示简体中文界面的解决方法。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/04/07/369169.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/369169.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47958/" target="_blank">风声又起 Windows 7 RTM版7月13日完成</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[DNN模块开发]DNN论坛模块扩展（更新于：2007-8-11，重新提供下载地址）</title><link>http://www.cnblogs.com/esshs/archive/2006/03/17/352135.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Fri, 17 Mar 2006 05:59:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/03/17/352135.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/352135.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/03/17/352135.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/352135.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/352135.html</trackback:ping><description><![CDATA[摘要: ShareDNN.ExtendForum是基于DNN3.2.x平台的一个为Forum_03.20.01模块开发的扩展模块。它提供一个单独的模块可以用来显示论坛统计信息，您可以将这个模块添加到网站的任何部位，而不仅仅只是让它显示在论坛的页脚部分。这个模块还提供多种论坛内容的RSS聚合方式。您可以很方便的在网站的任何部位添加“论坛新贴”，“阅读排行榜”，“回复排行榜”之类的小板块。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/03/17/352135.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/352135.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47957/" target="_blank">乔布斯和埃利森</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[DNN通用控件]DualListControl介绍</title><link>http://www.cnblogs.com/esshs/archive/2006/03/10/347255.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Fri, 10 Mar 2006 07:29:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/03/10/347255.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/347255.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/03/10/347255.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/347255.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/347255.html</trackback:ping><description><![CDATA[摘要: 介绍DotNetNuke中DualListControl的功能及使用方法。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2006/03/10/347255.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/347255.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47956/" target="_blank">Xbox Live将投放Silverlight广告</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[DNN通用控件]改善一下DNN3.2.x版本中的树形控件展开速度</title><link>http://www.cnblogs.com/esshs/archive/2006/02/11/328804.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Sat, 11 Feb 2006 03:51:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2006/02/11/328804.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/328804.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2006/02/11/328804.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/328804.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/328804.html</trackback:ping><description><![CDATA[　　3.2.x版本的DotNetNuke对树形控件做出了改进，其中的一个改进就是让树形控件的&#8220;展开/折叠&#8221;渐进执行，看起来效果不错，不过我不喜欢。如果树形菜单很长，就需要等待很长时间。<BR>　　在DNN中对Javascript脚本的调用都是通过ClientAPI来进行的，通过程序很快就可以知道&#8220;展开/折叠&#8221;动作是通过Javascript进行。在DNN/js目录中找到相应的脚本修改就可以了。改起来很容易，只用改两个地方。在dnn.controls.dnntree.js文件中找到dnn.dom.expandElement(oCtr);和dnn.dom.collapseElement(oCtr);，分别替换为oCtr.style.display = '';和oCtr.style.display = 'none';即可。<BR><BR>我改好的<A href="http://esshs.cnblogs.com/Files/esshs/dnn.controls.dnntree.rar" target="">dnn.controls.dnntree.js</A>(3.2.2版本DNN)文件，大家要是不想动手改，直接下载覆盖即可。<IMG src="http://www.cnblogs.com/Emoticons/emsmile.gif" align=absMiddle border=0> <img src ="http://www.cnblogs.com/esshs/aggbug/328804.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47951/" target="_blank">Debian无视GNU创始人警告 接受Mono</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[DNN模块开发]快速制作DNN模块安装包</title><link>http://www.cnblogs.com/esshs/archive/2005/11/28/286397.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Mon, 28 Nov 2005 11:49:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2005/11/28/286397.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/286397.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2005/11/28/286397.html#Feedback</comments><slash:comments>18</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/286397.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/286397.html</trackback:ping><description><![CDATA[<P>　　以前开发完DNN模块后，总是自己编写dnn文件并将需要的文件手动添加到DNN安装包中。这样的工作不仅繁琐而且比较容易出错。以前也用过DNN的模块定义中的&#8220;Create Private Assembly&#8221;功能，但有些文件总是打包不了。但看过程序后才明白，并不是DNN中制作模块安装包的功能不完善。而是自己创建的模块项目设置不符合DNN的标准。<BR>　　关于建立独立的DNN模块项目可参考《<A href="http://esshs.cnblogs.com/archive/2005/10/10/251537.html">建立单独的解决方案来开发DNN模块</A>》一文中的内容来建立DNN模块开发环境，如果要生成完整的DNN模块安装包，就需要把所有需要的文件包括到项目中。这样DNN在创建DNN模块安装包时，可以读取Project文件中的内容来打包模块需要用到的一些文件。而对于数据库安装脚本文件则需要将对应的脚本文件放置到相应的DataProviders文件夹下，如SQL Server的数据安装脚本文件就应该在&#8220;模块项目所在目录\Providers\DataProviders\SqlDataProvider&#8221;目录下，并且.SqlDataProvider作为后缀名（关于如果快速制作数据库安装脚本文件我有多篇文章介绍，大家自己在我的Blog上找找吧<IMG src="http://www.cnblogs.com/Emoticons/emsmile.gif" align=absMiddle border=0>）。对于语言包文件，这要位于模块所在目录的&#8220;App_LocalResources&#8221;目录下。然后需要做的工作就是要配置好模块定义，在DNN的模块定义中添加新的模块定义。配置好模块中各各控件的属性。配置好模块定义后，大家就可以用模块定义界面下的&#8220;Create Private Assembly&#8221;功能创建自己的模块安装包了。<BR>　　需要值得注意的是，利用高版本DNN直接生成的安装文件，在低版本的DNN中不能安装，这主要是因为高版本中DNN的模块定义又多出了一个属性，稍微修改一下*.dnn文件即可。在DNN3.1.0以后的版本中还增加了创建可以带源代码的安装文件包，DNN的功能真是越来越强了！<IMG src="http://www.cnblogs.com/Emoticons/emthup.gif" align=absMiddle border=0></P>
<P>注：在3.1.0以后的版本，DNN模块定义中有一个Folder Name的属性，这个就是表示模块所在目录名称。这个一定要填写正确否则不会出现&#8220;Create Private Assembly&#8221;的linkbutton。</P><img src ="http://www.cnblogs.com/esshs/aggbug/286397.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47950/" target="_blank">iPhone 3GS首发日创AT&T多项纪录</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>真是赶不上DNN的发展速度，DNN4.0.0已经发布了</title><link>http://www.cnblogs.com/esshs/archive/2005/11/08/271324.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Tue, 08 Nov 2005 02:54:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2005/11/08/271324.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/271324.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2005/11/08/271324.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/271324.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/271324.html</trackback:ping><description><![CDATA[　　记得半年前我还在看DNN 3.0.13，到目前为止还没有看完，想不到DNN已经在短短半年的时间已经又重新发布了几个版本。从3.0.13到3.1.0到3.1.1，今天他又同时发布了继续基于ASP.NET 1.1的DotNetNuke 3.2 版和基于ASP.NET 2.0的DotNetNuke 4.0版。哈哈，这下又有的学习了。<BR><BR>详细介绍请看：<A href="http://www.dotnetnuke.com/Default.aspx?tabid=886">http://www.dotnetnuke.com/Default.aspx?tabid=886</A> <img src ="http://www.cnblogs.com/esshs/aggbug/271324.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47949/" target="_blank">Silverlight开发大赛奖金高达10000美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[DNN模块开发]快速正确的制作DNN模块数据库安装脚本（2006-4-20重新修订）</title><link>http://www.cnblogs.com/esshs/archive/2005/10/25/261495.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Tue, 25 Oct 2005 04:58:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2005/10/25/261495.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/261495.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2005/10/25/261495.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/261495.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/261495.html</trackback:ping><description><![CDATA[摘要: 介绍如何快速正确的制作DNN模块数据库安装脚本的方法。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2005/10/25/261495.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/261495.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47947/" target="_blank">微软告攒机商第一案胜诉</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[DNN学习所得]如何防止页面中的敏感信息被提取</title><link>http://www.cnblogs.com/esshs/archive/2005/10/18/257155.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Tue, 18 Oct 2005 05:51:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2005/10/18/257155.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/257155.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2005/10/18/257155.html#Feedback</comments><slash:comments>40</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/257155.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/257155.html</trackback:ping><description><![CDATA[摘要: 将显示到网页上的敏感信息（如Email、电话号码，身份证号等）转换成ASCII编码字符串形式然后用javascript中的document.write方法写到页面上可有效防止信息被自动提取。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2005/10/18/257155.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/257155.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47946/" target="_blank">Mono这只猴子招惹了谁？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[DNN模块开发]增强型DNN在线调查模块（更新于：2008-11-25）</title><link>http://www.cnblogs.com/esshs/archive/2005/10/17/256477.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Mon, 17 Oct 2005 07:38:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2005/10/17/256477.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/256477.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2005/10/17/256477.html#Feedback</comments><slash:comments>20</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/256477.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/256477.html</trackback:ping><description><![CDATA[摘要: 增强型DotNetNuke调查模块&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2005/10/17/256477.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/256477.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47945/" target="_blank">Firefox 3.5本月晚些时候即首次升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>让动态生成的图表以.png文件显示</title><link>http://www.cnblogs.com/esshs/archive/2005/10/14/254691.html</link><dc:creator>二十四画生</dc:creator><author>二十四画生</author><pubDate>Fri, 14 Oct 2005 03:44:00 GMT</pubDate><guid>http://www.cnblogs.com/esshs/archive/2005/10/14/254691.html</guid><wfw:comment>http://www.cnblogs.com/esshs/comments/254691.html</wfw:comment><comments>http://www.cnblogs.com/esshs/archive/2005/10/14/254691.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/esshs/comments/commentRss/254691.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/esshs/services/trackbacks/254691.html</trackback:ping><description><![CDATA[摘要: 利用网址重写的方法改变.aspx的后缀名，从而达到让动态生成的图表以.png的形式显示。&nbsp;&nbsp;<a href='http://www.cnblogs.com/esshs/archive/2005/10/14/254691.html'>阅读全文</a><img src ="http://www.cnblogs.com/esshs/aggbug/254691.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47944/" target="_blank">Google App Engine出现故障宕机6小时</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>