﻿<?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>博客园-青松阳光</title><link>http://www.cnblogs.com/happyhzs2000/</link><description>关注于.NET技术</description><language>zh-cn</language><lastBuildDate>Thu, 16 Oct 2008 01:14:07 GMT</lastBuildDate><pubDate>Thu, 16 Oct 2008 01:14:07 GMT</pubDate><ttl>60</ttl><item><title>在User Control中使用自定义事件提高控件的可重用性</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/08/26/1276997.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Tue, 26 Aug 2008 12:25:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/08/26/1276997.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1276997.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/08/26/1276997.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1276997.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1276997.html</trackback:ping><description><![CDATA[<p><span style="font-family: 宋体">提到</span> User Control, <span style="font-family: 宋体">大家都很熟悉。一般多个页面要用到重复的控件元素时，可以将这些控件封装到</span>User Control<span style="font-family: 宋体">里，以提高系统的可维护性和扩展性。为了提高控件和页面的松散耦合度，当页面和</span>User Control<span style="font-family: 宋体">进行交互时，可以使用自定义事件。下面我用具体项目中应用的</span>User Control<span style="font-family: 宋体">，简单给大家介绍一下，如何在</span>User Control<span style="font-family: 宋体">中自定义事件，以及在页面里如何响应</span>User Control<span style="font-family: 宋体">的事件。</span></p>
<p>&nbsp;</p>
<p><img height="208" alt="" src="http://images.cnblogs.com/cnblogs_com/happyhzs2000/UserControlDemo.PNG" width="247" border="0" /></p>
<p>1.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">封装</span>User Control<span style="font-family: 宋体">的原因</span></p>
<p><span style="font-family: 宋体">我做的这个控件有一个</span>ListBox<span style="font-family: 宋体">，旁边有两个按钮，一个是</span>Add<span style="font-family: 宋体">按钮，用来添加用户，一个是</span>Remove<span style="font-family: 宋体">按钮，用来删除用户。用户的名称显示在</span>ListBox<span style="font-family: 宋体">之中。在添加和删除的时候本控件要做出验证，比如不能添加重复的用户，删除必须至少剩下一人。因此控件在进行操作时需要提供验证反馈信息，信息要显示在它所在的页面里。由于有多个页面需要这样的功能，所以我要将这个功能做成一个</span>User Control<span style="font-family: 宋体">。而我之所以要自定义的事件是因为在操作控件失败时，能够显示</span>User Control<span style="font-family: 宋体">反馈的验证信息，而且可以将</span>User Control<span style="font-family: 宋体">的反馈信息显示在想要显示的地方。</span></p>
<p style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt">2.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">自定义事件</span></p>
<p><span style="font-family: 宋体">定义事件很简单，在定义之前，我们要考虑一下事件所提供的参数是否要带一些个相关信息？这样可以分为两种情况：</span></p>
<p style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt">1&gt;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">不带相关信息参数的事件</span></p>
<p><span style="font-size: 10.5pt; font-family: 宋体">如果是这种情况，那更简单，我们可以直接用</span><span style="font-size: 10.5pt; font-family: 'Times New Roman'">.NET</span><span style="font-size: 10.5pt; font-family: 宋体">已经定义好的事件，在</span><span style="font-size: 10.5pt; font-family: 'Times New Roman'">User Control</span><span style="font-size: 10.5pt; font-family: 宋体">里这样定义：</span>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_201539" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_201539').style.display='none'; document.getElementById('Code_Open_Image_201539').style.display='inline'; document.getElementById('Code_Open_Text_201539').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_201539" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_201539').style.display='none'; getElementById('Code_Closed_Image_201539').style.display='inline'; getElementById('Code_Closed_Text_201539').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_201539">Code</span><span id="Code_Open_Text_201539" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">event</span><span style="color: #000000">&nbsp;EventHandler&nbsp;HandlerName;</span></span></div>
<p>&nbsp;<span class="code"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">然后在要激发事件的地方这样写：</span></span>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_201817" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_201817').style.display='none'; document.getElementById('Code_Open_Image_201817').style.display='inline'; document.getElementById('Code_Open_Text_201817').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_201817" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_201817').style.display='none'; getElementById('Code_Closed_Image_201817').style.display='inline'; getElementById('Code_Closed_Text_201817').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_201817">Code</span><span id="Code_Open_Text_201817" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">if</span><span style="color: #000000">(HandlerName</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
{<br />
&nbsp;&nbsp;HandlerName&nbsp;(</span><span style="color: #0000ff">this</span><span style="color: #000000">,&nbsp;e);<br />
}<br />
</span></span></div>
<p>&nbsp;&nbsp;</p>
<p><span style="font-family: 宋体">需要注意的是，我们要事先检查一下HandlerName</span><span style="font-family: 宋体">是否为Null</span><span style="font-family: 宋体">，如果事件没有被订阅的话，没有必要激发事件。</span></p>
<p style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt">1&gt;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体">带有相关信息参数的事件</span></p>
<p><span style="font-family: 宋体">显然我做的</span>User Control<span style="font-family: 宋体">事件参数是要带信息的，这个信息就是反馈文本。</span></p>
<p><span style="font-family: 宋体">我们需要写一个自定义事件参数类，继承自</span>EventArgs<span style="font-family: 宋体">。</span></p>
<p><span style="font-family: 宋体">我写了个</span><span style="font-size: 10pt; font-family: Verdana">UserListEventArgs</span><span style="font-size: 10pt; font-family: 宋体">类，添加了一个</span><span style="font-size: 10pt; font-family: Verdana">Message</span><span style="font-size: 10pt; font-family: 宋体">属性，用来填充反馈信息。</span></p>
<p><span style="font-size: 10pt; font-family: 宋体">好，我们在</span><span style="font-size: 10pt; font-family: Verdana">User Control</span><span style="font-size: 10pt; font-family: 宋体">里先定义一个公共代理：</span>&nbsp;</p>
<div class="cnblogs_code"><img id="Code_Closed_Image_201901" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_201901').style.display='none'; document.getElementById('Code_Open_Image_201901').style.display='inline'; document.getElementById('Code_Open_Text_201901').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_201901" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_201901').style.display='none'; getElementById('Code_Closed_Image_201901').style.display='inline'; getElementById('Code_Closed_Text_201901').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_201901">Code</span><span id="Code_Open_Text_201901" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">delegate</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;MessageNotifiedEventHandler(Object&nbsp;sender,&nbsp;Business.UserListEventArgs&nbsp;e);</span></span></div>
<p><span style="font-size: 10pt; font-family: 宋体">注意，其签名的第二个参数是我定义的参数类。</span></p>
<p><span style="font-size: 10pt; font-family: 宋体">然后定义一个公共的</span><span style="font-size: 10pt; font-family: Verdana">event</span><span style="font-size: 10pt; font-family: 宋体">成员变量：</span></p>
<span style="font-size: 10pt; font-family: 宋体">
<div class="cnblogs_code"><img id="Code_Closed_Image_201950" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_201950').style.display='none'; document.getElementById('Code_Open_Image_201950').style.display='inline'; document.getElementById('Code_Open_Text_201950').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_201950" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_201950').style.display='none'; getElementById('Code_Closed_Image_201950').style.display='inline'; getElementById('Code_Closed_Text_201950').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_201950">Code</span><span id="Code_Open_Text_201950" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">event</span><span style="color: #000000">&nbsp;MessageNotifiedEventHandler&nbsp;MessageNotified;</span></span></div>
<p><span style="font-size: 10pt; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-no-proof: yes">好，在我们要反馈信息的地方，比如添加用户重复了，需要这样激发事件：</span></p>
<div class="cnblogs_code"><img id="Code_Closed_Image_202139" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_202139').style.display='none'; document.getElementById('Code_Open_Image_202139').style.display='inline'; document.getElementById('Code_Open_Text_202139').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_202139" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_202139').style.display='none'; getElementById('Code_Closed_Image_202139').style.display='inline'; getElementById('Code_Closed_Text_202139').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_202139">Code</span><span id="Code_Open_Text_202139" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;message&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">The&nbsp;user&nbsp;{0}&nbsp;already&nbsp;existed.</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;hidUserName.Value);<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(MessageNotified&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;Business.UserListEventArgs&nbsp;args&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Business.UserListEventArgs();<br />
&nbsp;&nbsp;&nbsp;&nbsp;args.Message&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;message;<br />
&nbsp;&nbsp;&nbsp;&nbsp;MessageNotified(</span><span style="color: #0000ff">this</span><span style="color: #000000">,&nbsp;args);<br />
}</span></span></div>
<p><span style="font-size: 10pt; font-family: 宋体">注意要检查事件是否被订阅了。</span></p>
<p><span style="font-size: 10pt; font-family: 宋体">由于.NET Framework2.0引入了泛型，我们可以采用EventHandler类型的一般版本：EventHandler&lt;T&gt;，这里可以这样写：</span><span style="font-size: 10pt; font-family: 宋体"></p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">event</span><span style="color: #000000">&nbsp;EventHandler</span><span style="color: #000000">&lt;</span><span style="color: #000000">UserListEventArgs</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;MessageNotified;</span></div>
<p>两种定义是等效的。</span></p>
<p><span style="font-size: 10pt; font-family: Verdana">3.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; font-family: 宋体">订阅事件</span></p>
<p><span style="font-size: 10pt; font-family: 宋体">我们可以把封装好的</span><span style="font-size: 10pt; font-family: Verdana">User Control</span><span style="font-size: 10pt; font-family: 宋体">拖到相应的页面里，然后在这个页面里响应</span><span style="font-size: 10pt; font-family: Verdana">User Control</span><span style="font-size: 10pt; font-family: 宋体">的事件。</span></p>
<p><span style="font-size: 10pt; font-family: 宋体">首先我们要订阅此事件，在哪里订阅好呢？建议在</span><span style="font-size: 10pt; font-family: Verdana">Page</span><span style="font-size: 10pt; font-family: 宋体">的</span><span style="font-size: 10pt; font-family: Verdana">Page_Init</span><span style="font-size: 10pt; font-family: 宋体">事件里进行订阅，如下：</span></p>
<div class="cnblogs_code"><img id="Code_Closed_Image_202257" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_202257').style.display='none'; document.getElementById('Code_Open_Image_202257').style.display='inline'; document.getElementById('Code_Open_Text_202257').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_202257" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_202257').style.display='none'; getElementById('Code_Closed_Image_202257').style.display='inline'; getElementById('Code_Closed_Text_202257').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_202257">Code</span><span id="Code_Open_Text_202257" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Page_Init(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />
{<br />
&nbsp;&nbsp;&nbsp;UserList1.MessageNotified&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArchiveSystem.Components.UserList.MessageNotifiedEventHandler(UserList1_MessageNotified);<br />
}</span></span></div>
<p><span style="font-size: 10pt; font-family: 宋体">其中</span><span style="font-size: 10pt; font-family: Verdana">UserList1</span><span style="font-size: 10pt; font-family: 宋体">是本页面</span><span style="font-size: 10pt; font-family: Verdana">User Control</span><span style="font-size: 10pt; font-family: 宋体">的</span><span style="font-size: 10pt; font-family: Verdana">ID</span><span style="font-size: 10pt; font-family: 宋体">。</span></p>
<p><span style="font-size: 10pt; font-family: 宋体">我们在相应的响应事件中就可以任意处理其所带过来的反馈信息了：</span></p>
<div class="cnblogs_code"><img id="Code_Closed_Image_202345" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_202345').style.display='none'; document.getElementById('Code_Open_Image_202345').style.display='inline'; document.getElementById('Code_Open_Text_202345').style.display='inline';" height="16" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_202345" style="display: none" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_202345').style.display='none'; getElementById('Code_Closed_Image_202345').style.display='inline'; getElementById('Code_Closed_Text_202345').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_202345">Code</span><span id="Code_Open_Text_202345" style="display: none"><br />
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;UserList1_MessageNotified(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;UserListEventArgs&nbsp;e)<br />
{<br />
&nbsp;&nbsp;&nbsp;lblError.Text&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.Message;<br />
}</span></span></div>
<p><span style="font-size: 10pt; font-family: 宋体">其中</span><span style="font-size: 10pt; font-family: Verdana">lblError</span><span style="font-size: 10pt; font-family: 宋体">是本页面一个统一的显示反馈信息的标签。</span></p>
<p><span style="font-size: 10pt; font-family: Verdana">4.<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; font-family: 宋体">其它</span></p>
<p><span style="font-size: 10pt; font-family: 宋体">当然了我们需要访问这个控件的人员信息，那么你觉得应当把</span><span style="font-size: 10pt; font-family: Verdana">ListBox</span><span style="font-size: 10pt; font-family: 宋体">（封装到公共属性中）直接暴露给外界好吗？我觉得外界不必直接操作这个</span><span style="font-size: 10pt; font-family: Verdana">ListBox</span><span style="font-size: 10pt; font-family: 宋体">。我封装了一个</span><span style="font-size: 10pt; font-family: Verdana">Items</span><span style="font-size: 10pt; font-family: 宋体">公共属性来让外界访问人员信息，并且暴露了一个</span><span style="font-size: 10pt; font-family: Verdana">Public</span><span style="font-size: 10pt; font-family: 宋体">的</span><span style="font-size: 10pt; font-family: Verdana">BindData(string users)</span><span style="font-size: 10pt; font-family: 宋体">函数来让外界初始化这个</span><span style="font-size: 10pt; font-family: Verdana">User Control</span><span style="font-size: 10pt; font-family: 宋体">人员信息。</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 10pt; font-family: 宋体">希望我写的这篇随便能给大家带来些帮助。</span></p>
</span>
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1276997.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43015/" target="_blank">[新闻]Gartner:未来3年十大战略技术 虚拟化居首</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>VMS项目总结</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/08/24/1275052.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Sun, 24 Aug 2008 02:55:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/08/24/1275052.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1275052.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/08/24/1275052.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1275052.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1275052.html</trackback:ping><description><![CDATA[<p><span style="font-family: 宋体"><span style="font-family: Verdana">开发完一个项目后，如果能够很好的对这个项目做个总结，对我们以后的项目开发以及个人技术的积累都会有很大的帮助。最近在外派公司做完一个系统，在此进行一下深入的总结，也希望给读者带来一些个启示。</span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt">&nbsp;</span></span></p>
<p><span style="font-family: 宋体"><span style="font-family: Verdana"><span style="font-size: 10pt">一．系统介绍</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">本系统是某一跨国公司北京</span>Site<span style="font-family: 宋体">的班车预订系统（班车超多，往返于北京和天津之间）。客户（公司员工）能够在本系统中已经发布的班车路线里预订座位；如果没有相应的班车（座位已满），可以提交申请，让</span>Travel Clerk<span style="font-family: 宋体">新建立班车路线；能够对系统运行进行各种的统计生成报表，比如班车运行效率，司机出车情况等等。</span></span></span></p>
<p><span style="font-family: 宋体"><span style="font-family: Verdana"><span style="font-size: 10pt">二．应用的开发技术和工具</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt">ASP.NET 2.0, ASP.NET Ajax, SqlServer 2000, C#, NHibernate, Crystal Report</span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">使用的是常用的技术，我认为开发一个系统不一定要用最流行的技术，这要看项目开发的需求，以及参与开发人员掌握的情况。如果项目紧的话，就需要采用成熟（传统</span>ASP.NET<span style="font-family: 宋体">技术）的技术进行有效的开发。系统的业务层和数据访问层在此系统实际上归为了一个层里，都由</span>Nhibernate<span style="font-family: 宋体">实现。</span>Nhibernate<span style="font-family: 宋体">是一个</span>.Net<span style="font-family: 宋体">实现的面向对象的框架，即</span>ORM. <span style="font-family: 宋体">我觉得和</span>Linq<span style="font-family: 宋体">很类似。</span></span></span></p>
<p><span style="font-family: 宋体"><span style="font-family: Verdana"><span style="font-size: 10pt">三．项目开发中遇到的实际问题</span></span></span></p>
<p><span style="font-family: 宋体"><span style="font-family: Verdana"><span style="font-size: 10pt">令我印象最深刻的就是，在开发中系统需求一直在变化，因此一听到要改东西，心里就窝火。</span></span></span></p>
<p><span style="font-family: 宋体"><span style="font-family: Verdana"><span style="font-size: 10pt">要知道需求频繁的变更，对于开发来说打击很大，殊不知不断的改代码，系统会变得脆弱些，当然这样应当加大测试的力度。</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">在开发之前的设计中也有一个失误，没有把业务考虑全，造成在开发中要费很大的力量进行弥补（在此提一下设计的失误之处，一般情况下班车是不跨天运营的，在开发中期，客户竟然提出班车有可能跨天，比如晚上</span>11<span style="font-family: 宋体">点出发，后半夜</span>12<span style="font-family: 宋体">点半去机场接人），超郁闷。</span></span></span></p>
<p><span style="font-family: 宋体"><span style="font-family: Verdana"><span style="font-size: 10pt">在技术上基本上没有什么障碍，在组员的互相交流中很快搞定。</span></span></span></p>
<p style="margin: 0cm 0cm 0pt 21pt; text-indent: -21pt"><span style="font-family: Verdana"><span style="font-size: 10pt">四．<span style="font-family: 宋体">开发中值得一提的几个技术点</span></span></span></p>
<p style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt"><span style="font-family: Verdana"><span style="font-size: 10pt">1．&nbsp;<span style="font-family: 宋体">模板页的应用</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">当然了既然用</span>asp.net 2.0<span style="font-family: 宋体">开发，基本上会用到模板页的，但是使用的深度不同。比如说</span>Master Page<span style="font-family: 宋体">和</span>Content Page<span style="font-family: 宋体">之间（双向的）的相互访问。一般情况下是</span>Content Page<span style="font-family: 宋体">访问</span>Master Page<span style="font-family: 宋体">，然而反过来呢？在此提出一个建议，当</span>Master Page<span style="font-family: 宋体">访问</span>Content Page<span style="font-family: 宋体">时应当是松散耦合的，</span> <span style="font-family: 宋体">可以在</span>Master Page<span style="font-family: 宋体">中生成事件让</span>Content Page<span style="font-family: 宋体">来订阅。</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">还有一点值得一提，因为</span>Master Page<span style="font-family: 宋体">是一个</span>Naming Container<span style="font-family: 宋体">，所以在它之下的控件的</span>ID<span style="font-family: 宋体">之前是要坠上</span>Master Page<span style="font-family: 宋体">的</span>ID<span style="font-family: 宋体">的，此外</span>Content Place Holder<span style="font-family: 宋体">和</span>GridViewRow<span style="font-family: 宋体">等等都是</span>Naming Container<span style="font-family: 宋体">，因此在应用</span>FindControl<span style="font-family: 宋体">时要注意，此函数是不能穿透</span>Naming Container<span style="font-family: 宋体">来寻找指定</span>Control<span style="font-family: 宋体">的。</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt">2. <span style="font-family: 宋体">跨页提交</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">跨页提交是</span>ASP.NET 2.0<span style="font-family: 宋体">的一个新特性，当提交页面要向另外一个页面传递大量数据时，可以考虑用跨页提交技术。因为其他技术都不怎么合适，比如</span>Session<span style="font-family: 宋体">，</span>QueryString<span style="font-family: 宋体">（地址栏参数最大限制为</span>2K<span style="font-family: 宋体">）等等。</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt">3. <span style="font-family: 宋体">动态生成控件以及响应事件</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">在页面中有时需要动态生成很多的控件，这些还要相应事件。在这种情况下要注意，如果不做好处理，当页面进行回发时，动态控件会丢失。我们需要在每次在页面的PreInIt或者</span>Init<span style="font-family: 宋体">事件里生成这些动态控件。</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt">4. Javascript<span style="font-family: 宋体">和</span>Css</span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">开发这个系统没有用到什么流行的技术，但是</span>Javascript<span style="font-family: 宋体">和</span>Css<span style="font-family: 宋体">要求很高。因此在这两方面有所提高。在次提一下，做</span>asp.net<span style="font-family: 宋体">开发的人员有相当一部分人员是由桌面开发转来的，因此大家的</span>Javascript<span style="font-family: 宋体">和</span>Css<span style="font-family: 宋体">功底一般不深，老是认为这些是美工他们的工作，心理存在某些个抵制，看不起</span>Javascript<span style="font-family: 宋体">。这是一个认识上的问题，做</span>Web<span style="font-family: 宋体">开发，不管</span>.NET<span style="font-family: 宋体">有多精深，</span>ASP.NET<span style="font-family: 宋体">最终要做的还是要把</span>html<span style="font-family: 宋体">标记推送到客户的浏览器里。如果不懂</span>html, javascript, css<span style="font-family: 宋体">，我可以说</span>ASP.NET<span style="font-family: 宋体">开发是永远做不到精益求精的。启示做</span>Web<span style="font-family: 宋体">开发要求掌握很多的东西</span>, http<span style="font-family: 宋体">协议，</span>IIS<span style="font-family: 宋体">，</span>web<span style="font-family: 宋体">技术，服务器部署等等。还是那句话，学海无涯，技术无止境！</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt">5. Nhibernate</span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">开发这个系统对</span>Nhibernate<span style="font-family: 宋体">有了一定的认识，</span>ORM<span style="font-family: 宋体">框架用起来确实很方便，我们用对象去考虑问题，不必再写那些个繁琐的</span>Sql<span style="font-family: 宋体">语句，当然些</span>hql<span style="font-family: 宋体">还是要懂得</span>sql<span style="font-family: 宋体">才行。</span>Linq<span style="font-family: 宋体">的目的也在此。但是对于复杂的统计功能，我觉得</span>Nhibernate<span style="font-family: 宋体">就不合适了，因此这个系统在这方面还是用的</span>Sql<span style="font-family: 宋体">。</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt">6. <span style="font-family: 宋体">高效率使用</span>Google<span style="font-family: 宋体">查询</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">这个项目确实很紧，做</span>Web<span style="font-family: 宋体">开发离开互联网，离开</span>Google<span style="font-family: 宋体">不可想象。也许也应了这句话，</span>Web<span style="font-family: 宋体">开发来源于互联网，回报于互联网。如果能高效的借助</span>Google<span style="font-family: 宋体">快速找到自己要解决问题的方案，会加快项目的开发。请在<a href="http://www.cnblogs.com/happyhzs2000/archive/2008/03/09/1097166.html" target="_blank">这里</a>阅读本人的</span>Google<span style="font-family: 宋体">搜索心得。</span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt">&nbsp;</span></span></p>
<p><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">本项目从</span>6<span style="font-family: 宋体">月</span>18<span style="font-family: 宋体">号开始一直到最近结束。</span></span></span></p>
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1275052.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43014/" target="_blank">[新闻]微软明年关闭MSN群组 Windows Live将取而代之</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>Some useful date processing SQL Snippets</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/08/12/1265779.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Tue, 12 Aug 2008 03:20:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/08/12/1265779.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1265779.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/08/12/1265779.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1265779.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1265779.html</trackback:ping><description><![CDATA[<p align="left">由于项目需要，需要一些个处理日期的sql语句，从网上搜了一下，其中有一篇blog写的不错，共享如下</p>
<p align="left">From&nbsp;<a href="http://devpinoy.org/blogs/keithrull/archive/2008/07/24/some-useful-date-processing-sql-snippets.aspx">this</a> post:</p>
<pre><span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent"><span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">---Calculates the first day of the previous month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(mm, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(m, 0, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GETDATE</span>()) - 1, 0)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [First <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the previous <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">---Calculates the first day of current month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(mm, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(m, 0, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GETDATE</span>()), 0)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [First <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">current</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">---Calculates the first day of next month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(mm, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(m, 0, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GETDATE</span>()) + 1, 0)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [First <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the next <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">---Calculates the last day of the previous month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(d, -1, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(mm, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(m, 0, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GETDATE</span>()), 0))
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Last <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the previous <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">---Calculates the last day of the current month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(d, -1, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(mm, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(m, 0, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GETDATE</span>()) + 1, 0))
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Last <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">current</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Calculates the last day of the next month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(d, -1, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(mm, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(m, 0, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GETDATE</span>()) + 2, 0))
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Last <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the next <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Calculates the first day of the year</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(yy, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(yy,0,<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>()), 0)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [First <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">year</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Calculates the first day of the quater</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(qq, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(qq,0,<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>()), 0)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [First <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the quarter]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Calculates the first monday of the month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(wk, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(wk,0,<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">dateadd</span>(dd, 6 - <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEPART</span>(<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">Day</span>,<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>()),<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>())), 0)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [First monday <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Calculates the last day of the prior month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(mm, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(mm,0,<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>()), 0)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Last <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the previous <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Calculates the last day of the prior year</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(yy, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(yy,0,<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>()), 0)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Last <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the previous <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">year</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Calculates the last day of the current year</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(mm, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(m,0,<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>() ) + 1, 0)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Last <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">current</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">year</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Calculates the monday of the current week</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(wk, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(wk,0,<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>()), 0)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Monday <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">current</span> week]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Calculates the yesterdays date</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(dd, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(dd,0,<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">getdate</span>()), -1)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Yesterdays date]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Calculates the todays date</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>()
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Todays date]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Calculates the tommorows date</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(dd, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(dd,0,<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">getdate</span>()), 1)
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Tommorows date]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">---Calculates the 15th day of previous month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(d, 14, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(mm, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(m, 0, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GETDATE</span>()) - 1 , 0))
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [15th <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> previous <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">---Calculates the 15th day of current month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(d, 14, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(mm, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(m, 0, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GETDATE</span>()), 0))
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [15th <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">current</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">---Calculates the 15th day of next month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(d, 14, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(mm, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEDIFF</span>(m, 0, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GETDATE</span>()) + 1, 0))
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [15th <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">day</span> <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> next <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Gets the name of the current month</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATENAME</span>(<span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>())
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Name <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">current</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">month</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Gets the weekday name of the current date</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATENAME</span>(dw, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>())
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Weekday name <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">current</span> date]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Gets the weekday name of the current date next year</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATENAME</span>(dw, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(yy, 1, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>()))
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Weekday name <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">current</span> date next <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">year</span>]
<span style="font-size: 11px; color: teal; font-family: Courier New; background-color: transparent">--Gets the weekday name of the current date last year</span>
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">SELECT</span> <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATENAME</span>(dw, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">DATEADD</span>(yy, -1, <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">GetDate</span>()))
<span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">AS</span> [Weekday name <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">of</span> the <span style="font-size: 11px; color: blue; font-family: Courier New; background-color: transparent">current</span> date last <span style="font-size: 11px; color: fuchsia; font-family: Courier New; background-color: transparent">year</span>]
</span></pre>
<p>And here's the result for the query above</p>
<pre><span style="font-size: 11px; color: black; font-family: Courier New; background-color: transparent">First day of the previous month
-------------------------------
2008-06-01 00:00:00.000
(1 row(s) affected)
First day of the current month
------------------------------
2008-07-01 00:00:00.000
(1 row(s) affected)
First day of the next month
---------------------------
2008-08-01 00:00:00.000
(1 row(s) affected)
Last day of the previous month
------------------------------
2008-06-30 00:00:00.000
(1 row(s) affected)
Last day of the current month
-----------------------------
2008-07-31 00:00:00.000
(1 row(s) affected)
Last day of the next month
--------------------------
2008-08-31 00:00:00.000
(1 row(s) affected)
First day of the year
-----------------------
2008-01-01 00:00:00.000
(1 row(s) affected)
First day of the quarter
------------------------
2008-07-01 00:00:00.000
(1 row(s) affected)
First monday of the month
-------------------------
2008-07-07 00:00:00.000
(1 row(s) affected)
Last day of the previous month
------------------------------
2008-07-01 00:00:00.000
(1 row(s) affected)
Last day of the previous year
-----------------------------
2008-01-01 00:00:00.000
(1 row(s) affected)
Last day of the current year
----------------------------
2008-08-01 00:00:00.000
(1 row(s) affected)
Monday of the current week
--------------------------
2008-07-21 00:00:00.000
(1 row(s) affected)
Yesterdays date
-----------------------
2008-07-23 00:00:00.000
(1 row(s) affected)
Todays date
-----------------------
2008-07-24 11:40:57.557
(1 row(s) affected)
Tommorows date
-----------------------
2008-07-25 00:00:00.000
(1 row(s) affected)
15th day of previous month
--------------------------
2008-06-15 00:00:00.000
(1 row(s) affected)
15th day of current month
-------------------------
2008-07-15 00:00:00.000
(1 row(s) affected)
15th day of next month
-----------------------
2008-08-15 00:00:00.000
(1 row(s) affected)
Name of the current month
------------------------------
July
(1 row(s) affected)
Weekday name of the current date
--------------------------------
Thursday
(1 row(s) affected)
Weekday name of the current date next year
------------------------------------------
Friday
(1 row(s) affected)
Weekday name of the current date last year
------------------------------------------
Tuesday
(1 row(s) affected)</span></pre>
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1265779.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43013/" 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>Righthand Dataset Debugger Visualizer</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/06/01/1211524.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Sun, 01 Jun 2008 02:59:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/06/01/1211524.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1211524.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/06/01/1211524.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1211524.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1211524.html</trackback:ping><description><![CDATA[<p><span style="color: red">updated on 2008/6/18</span><br />
<br />
大家都知道从vs2005起，在vs里debug时，可以观看dataset变量的信息，但是不能观察得很仔细，比如DataRow的状态, 同处于一个Dataset的几张表的关系等等。而今天介绍的Righthand Dataset Debugger visualizer可以帮助我们查看到更多的信息。大家可以看几张截图，目前它可以支持vs2005和vs2008，在<a href="http://cs.rthand.com/blogs/blog_with_righthand/pages/Righthand-Dataset-Debugger-Visualizer.aspx" target="_blank">这里</a>查看具体信息。<br />
<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/happyhzs2000/righthanddatasetvisualizer1.png" border="0" /><br />
<br />
<img alt="" src="http://www.cnblogs.com/images/cnblogs_com/happyhzs2000/RighthandDatasetVisualizer2.png" border="0" /><br />
<br />
<img height="498" alt="" src="http://www.cnblogs.com/images/cnblogs_com/happyhzs2000/RighthandDatasetVisualizer3.png" width="953" border="0" /><br />
<br />
<br />
另外还有一个Visualizer的列表，大家如果感兴趣，可以在<a href="http://www.dotnetpowered.com/DebuggerVisualizers.aspx" target="_blank">这里</a>查看。</p>
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1211524.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43012/" target="_blank">[新闻]最富有科技公司：中移动310亿美元居首</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>Zoomit, a presentation utility</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/05/29/1210267.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Thu, 29 May 2008 13:12:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/05/29/1210267.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1210267.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/05/29/1210267.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1210267.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1210267.html</trackback:ping><description><![CDATA[作为技术人员，少不了在项目组内进行技术交流，比如使用ppt介绍某个技术或者开发技巧。我所供职的几个公司都会有这样的技术交流，因此会涉及到ppt演讲。前两周从网上淘金，无意中发现竟然有一个做演讲的辅助工具，叫zoomit。这个小工具确实很棒，可以帮助我们在ppt演讲时做辅助功能，比如放大缩小或者绘图等等，确实很不错，所以在此介绍给大家。虽然这篇文章不涉及.NET技术，我觉得很有必要和大家一起共享。<br />
大家可以在<a href="http://technet.microsoft.com/en-us/sysinternals/bb897434.aspx" target="_blank">这里</a>了解和下载zoomit，这个工具具有放大缩小屏幕，就地绘图，保存图片，敲入文本的功能。强力推荐！<br />
<br />
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1210267.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43010/" target="_blank">[新闻]华盛顿抛弃微软Office 选择Google Apps</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>Microsoft Source Analysis for C# Release</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/05/24/1206290.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Sat, 24 May 2008 01:47:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/05/24/1206290.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1206290.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/05/24/1206290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1206290.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1206290.html</trackback:ping><description><![CDATA[<span style="font-family: Verdana">最近微软发布了一款代码分析工具，和微软内部使用的FxCop有些不同，目的大致一样，其工具的规则覆盖到：<br />
<br />
</span>
<li><span style="font-family: Verdana">Layout of elements, statements, expressions, and query clauses </span>
<li><span style="font-family: Verdana">Placement of curly brackets, parenthesis, square brackets, etc </span>
<li><span style="font-family: Verdana">Spacing around keywords and operator symbols </span>
<li><span style="font-family: Verdana">Line spacing </span>
<li><span style="font-family: Verdana">Placement of method parameters within method declarations or method calls </span>
<li><span style="font-family: Verdana">Standard ordering of elements within a class </span>
<li><span style="font-family: Verdana">Formatting of documentation within element headers and file headers </span>
<li><span style="font-family: Verdana">Naming of elements, fields and variables </span>
<li><span style="font-family: Verdana">Use of the built-in types </span>
<li><span style="font-family: Verdana">Use of access modifiers </span>
<li><span style="font-family: Verdana">Allowed contents of files </span>
<li><span style="font-family: Verdana">Debugging text</span></li>
<p><span style="font-family: Verdana">大家可以在<a href="http://blogs.msdn.com/sourceanalysis/archive/2008/05/23/announcing-the-release-of-microsoft-source-analysis.aspx" target="_blank">这里</a>看到具体介绍。</span></p>
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1206290.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43009/" target="_blank">[新闻]微软：WGA验证每小时黑屏是善意提醒</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>高效率利用Google</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/03/09/1097166.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Sun, 09 Mar 2008 03:02:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/03/09/1097166.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1097166.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/03/09/1097166.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1097166.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1097166.html</trackback:ping><description><![CDATA[<p><font face="Verdana">在软件开发行业如果没有Google的大力帮助真是难以想象我们的开发效率会怎么样。我是深有体会的，最近我被外派一家跨国石油公司做开发，开始几天帐号没有下来，只有一个系统功能帐号，因此我不能上网，也不能借助Google的帮助了，我当时想如果没有网络，我还能开发吗？</font></p>
<p><font face="Verdana">在此只是强调一下网络资源的重要性，我们无需自己死抠问题咋解决，网上就有，国外的技术网站多的是。因此我们就是要好好利用Google，高效率的搜索出我们要找的东西。</font></p>
<p><font face="Verdana">我愿意把我自己使用google的经验分享给大家，以促进交流。</font></p>
<p><font face="Verdana">在搜索时我们一定要明确要找到什么样的结果，争取在Google的搜索列表的前几项就是我们要的东西。比如说我要看看发送邮件方面的技术文章，如果我在google里输入Send Email两个单词，那么出来的结果会很多，有很多不相关的东西。那么我们就需要再加入一个关键词，比如我们使用的开发语言C#，所以如果我们使用Send Email C#这三个关键词一起搜索的话，那么出来的结果比较理想。因为C#这个关键词一下子就把结果列表限制在了开发上。</font></p>
<p><font face="Verdana">如果我只想找VB.NET方面的发送邮件，那好我们可以用google自己的搜索语法，用这些关键词Send Email VB.NET -C#。注意那个&#8220;-&#8221;号是将C#排除在搜索之列的，这样就达到了精确定位的效果了。</font></p>
<p><font face="Verdana">大家知道国外有很多的技术网站，例如www.asp.net, 4guysfromrolla.com, codeproject.com，里面有很多的技术文章，我们也可以直接用google局限在这些网站里搜索。<font face="Verdana">拿</font>上面的例子说，我输入Send Email site:codeproject.com。site关键词命令google我只想在codeproject.com站点里里搜索。</font></p>
<p><font face="Verdana">有时候我们在开发时代码会抛出异常，打出一个黄屏来，首先映入眼帘的就是Error Message。我们可以用西文的双引号把这个错误消息拿到google里搜索。因为引号里的字符串google是当作一个关键词搜索的，那肯定是一搜一个准，当然是针对这些错误消息。</font></p>
<p><font face="Verdana">另外我给大家推荐一个地址：<a href="http://www.google.com/coop/cse?cx=006489057104948205498%3A4rvfcebbszk">.NET SEARCH</a>, 专门用来搜索.NET东西的，希望对大家有所帮助。</font></p>
<p><font face="Verdana">最后，我不建议用中文在google里搜索，<font face="Verdana">因为搜索效果不佳，</font>说明了一点，技术贡献主要在国外，国外的论坛里交流得很好。</font></p>
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1097166.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43008/" 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>Nhibernate tutorial推荐</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/02/21/1075997.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Thu, 21 Feb 2008 01:38:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/02/21/1075997.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1075997.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/02/21/1075997.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1075997.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1075997.html</trackback:ping><description><![CDATA[<font face="Verdana">最近做项目需要学习Nhibernate, 在网上想找个快速入门的tutorial看看，然后再深入的研究一下，发现CodeGod写的不错，现在推荐给大家，以供参考：</font><br />
<br />
<font face="Verdana"><a href="http://www.codegod.de/WebAppCodeGod/nhibernate-tutorial-1---and-aspnet-AID25.aspx"><font face="Verdana">NHibernate Tutorial (1) - and ASP.NET</font><br />
</a></font><br />
<font face="Verdana"><a href="http://www.codegod.de/WebAppCodeGod/nhibernate-tutorial-2-collections-transactions-binding-AID176.aspx"><font face="Verdana">NHibernate Tutorial (2): Collections, Transactions, Binding</font></a></font><br />
<br />
<font face="Verdana"><a href="http://www.codegod.de/WebAppCodeGod/nhibernate-tutorial-3-hql-queries-AID179.aspx"><font face="Verdana">NHibernate Tutorial (3): HQL Queries</font><br />
</a></font><br />
<font face="Verdana"><a href="http://www.codegod.de/WebAppCodeGod/nhibernate-tutorial-4-intellisense-in-vs-AID187.aspx"><font face="Verdana">NHibernate Tutorial (4): Intellisense in VS</font><br />
</a></font><br />
<font face="Verdana"><a href="http://www.codegod.de/WebAppCodeGod/nhibernate-tutorial-5-tool-hbm2net-AID192.aspx"><font face="Verdana">NHibernate Tutorial (5): Tool hbm2net</font><br />
</a></font><br />
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1075997.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43007/" target="_blank">[新闻]为什么叫Windows 7？</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>VS 2008 Web Development Hot-Fix Roll-Up Available</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/02/13/1067606.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Wed, 13 Feb 2008 01:28:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/02/13/1067606.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1067606.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/02/13/1067606.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1067606.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1067606.html</trackback:ping><description><![CDATA[<span style="font-family: Verdana"><span style="font-family: SimSun">针对</span>vs2008<span style="font-family: SimSun">和</span>Visual Web Developer Express 2008<span style="font-family: SimSun">微软发布了一个补丁，其修复的功能有：<br />
</span></span>
<ol style="margin-top: 0in" type="1">
    <li style="tab-stops: list .5in"><span style="font-family: Verdana"><span style="font-family: SimSun">提高</span>HTML<span style="font-family: SimSun">源码视图的性能</span></span>
    <li style="tab-stops: list .5in"><span style="font-family: Verdana"><span style="font-family: SimSun">提供</span>Design<span style="font-family: SimSun">视图的性能</span></span>
    <li style="tab-stops: list .5in"><span style="font-family: Verdana"><span style="font-family: SimSun">修复在编辑</span>Html<span style="font-family: SimSun">时两个</span>bug</span>
    <li style="tab-stops: list .5in"><span style="font-family: Verdana"><span style="font-family: SimSun">提高</span>web build<span style="font-family: SimSun">的性能</span></span> </li>
</ol>
<p style="tab-stops: list .5in"><span style="font-family: Verdana"><span style="font-family: SimSun">大家可以在<a href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=10826">这里</a>下载补丁</span></span></p>
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1067606.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43003/" target="_blank">[新闻]Open Source Camp 北京 2008技术交流盛会</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>Web Development Helper</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/02/03/1063583.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Sun, 03 Feb 2008 06:49:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/02/03/1063583.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1063583.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/02/03/1063583.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1063583.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1063583.html</trackback:ping><description><![CDATA[<p><font face="Verdana">Web Development Helper 是一个很值得推荐的IE插件，对于做asp.net，ajax开发有很大的帮助。<br />
它提供Http请求及响应跟踪，页面脚本调试，asp.net页ViewState查看等功能。 我很喜欢这款插件，尤其是它的script功能，可以在即时命令窗口里运行自己写的javascript， 以及页面Dom查看功能，还可以用它抓个图。<br />
</font></p>
<p><font face="Verdana">其完整功能列举如下：<br />
</p>
<li>A warning when either debug or trace have been turned on. Ability to hide trace information from the page, and view it in a separate dialog, so it does not get in the way of your page's layout.
<li>Ability to view the page's view state (in various forms: raw, parsed, and decoded) to help you optimize your state management logic.
<li>Ability to view items stored in cache, and remove them for testing purposes.
<li>Ability to shutdown the application (unloading the associated appdomain), in order to test starting it from a clean state.
<li>Ability to log all HTTP (and HTTPS) traffic between the browser and your server, and view request and response details, including those performed via XMLHttpRequest.
<li>Ability to view the live HTML DOM using a DOM Inspector that allows viewing all elements, selected elements, or elements matching ID or CSS class. For each element, you can see the markup, attributes, and style attributes.
<li>Ability to view rich error information for script errors (full call stack, script URL and line number), as well as a script immediate window to execute some script against the current document.
<p>如果好好研究一下，相信会对我们的开发带来很大帮助的。<br />
大家可以在<a href="http://projects.nikhilk.net/Projects/WebDevHelper.aspx">这里</a>查看具体介绍.<br />
<br />
<br />
<br />
<img height="768" alt="" src="http://www.cnblogs.com/images/cnblogs_com/happyhzs2000/ExeScript.PNG" width="1024" border="0" /><br />
<br />
<img height="768" alt="" src="http://www.cnblogs.com/images/cnblogs_com/happyhzs2000/dom.PNG" width="1024" border="0" /><br />
<br />
<img height="768" alt="" src="http://www.cnblogs.com/images/cnblogs_com/happyhzs2000/screensave.PNG" width="1024" border="0" /></p>
</font></li>
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1063583.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43002/" target="_blank">[新闻]关于 Silverlight 2 Control Tookit 的最新消息</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>在n层架构的数据层中采用DataSet</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/02/01/1061676.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Fri, 01 Feb 2008 09:36:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/02/01/1061676.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1061676.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/02/01/1061676.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1061676.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1061676.html</trackback:ping><description><![CDATA[<p><font face="Verdana">在做asp.net系统时，一般都少不了需要一个数据层访问数据库，而在当今面向对象风靡之时，从对象到关系数据库的映射一般会体现在数据层里。ORM，即Object Relationship Mapping。而在做数据层时，有的方案是采取手工编码，构建类和关系表的映射，有的则采取ORM工具和手工编码相结合。<font face="Verdana">NHibernate就是一个开源的针对.NET的ORM方案.<br />
</font>Visual Studio IDE的DataSet其实就是一个很好的一个orm工具。</font></p>
<p><font face="Verdana">这里推荐系列文章，题为 Designing N-Tiered Data Access Layer Using Datasets，希望能给大家带来帮助。<br />
<a href="http://www.15seconds.com/issue/080103.htm">Part 1<br />
</a><a href="http://www.15seconds.com/issue/080117.htm">Part 2<br />
</a><a href="http://www.15seconds.com/issue/080131.htm">Part 3</a></font></p>
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1061676.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43001/" target="_blank">[新闻]新编程语言——微软的“M”语言</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>.NET Framework Library Source Code now available</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/01/17/1042289.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Thu, 17 Jan 2008 01:00:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/01/17/1042289.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1042289.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/01/17/1042289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1042289.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1042289.html</trackback:ping><description><![CDATA[<br />
.NET框架源码终于可以看到了，大家可以到ScottGu&#8216;s blog上去看，在<a href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx">这里</a>。<br />
另外Shawn Burke 给出了具体的介绍，请查看<a href="http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx">这里</a>.
 <img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1042289.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43000/" target="_blank">[新闻]Firefox 3.1 Beta</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>Scott Guthrie北京ASP.NET技术演讲</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/01/15/1040040.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Tue, 15 Jan 2008 08:25:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/01/15/1040040.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1040040.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/01/15/1040040.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1040040.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1040040.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-family: Verdana"><span style="font-family: Verdana"><span style="font-family: 宋体">时间：</span>2008-1-13 13:30pm</span></span></p>
<p><span style="font-family: Verdana"><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">地点：现代汽车大厦</span>18<span style="font-family: 宋体">层</span></span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">前序：签名，领反馈表，</span>MVP<span style="font-family: 宋体">宣传单</span></span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-family: 宋体">正文：当</span>Scott <span style="font-size: 10pt; font-family: Arial">Guthrie</span><span style="font-size: 10pt; font-family: 宋体">背着挎包步入会场时，全场热烈掌声。能够亲眼见到这位微软开发部部门经理，真是感到很荣幸。从开始到结束，给人的感觉</span>Scott <span style="font-size: 10pt; font-family: Arial">Guthrie</span><span style="font-size: 10pt; font-family: 宋体">不是一个领导人物，而是一个技术功底深厚的开发人员。当然微软的经理们无不是技术出身。</span></span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-size: 10pt; font-family: 宋体">两个小时之内，</span>Scott <span style="font-size: 10pt; font-family: Arial">Guthrie</span><span style="font-size: 10pt; font-family: 宋体">讲述的议题涉及到</span><span style="font-size: 10pt; font-family: Arial">vs2008</span><span style="font-size: 10pt; font-family: 宋体">，</span><span style="font-size: 10pt; font-family: Arial">LINQ, Silverlight, WPF</span><span style="font-size: 10pt; font-family: 宋体">等。当演示</span><span style="font-size: 10pt; font-family: Arial">vs2008</span><span style="font-size: 10pt; font-family: 宋体">可以在</span><span style="font-size: 10pt; font-family: Arial">Debug</span><span style="font-size: 10pt; font-family: 宋体">时直接跳进</span><span style="font-size: 10pt; font-family: Arial">.NET</span><span style="font-size: 10pt; font-family: 宋体">库源码分析时，幻灯被关掉，因为</span>Scott <span style="font-size: 10pt; font-family: Arial">Guthrie</span><span style="font-size: 10pt; font-family: 宋体">要在</span><span style="font-size: 10pt; font-family: Arial">vs2008</span><span style="font-size: 10pt; font-family: 宋体">里配置源码服务器地址，而到晚些时候这个地址才会全球公布。</span></span></span></span></p>
<p><span style="font-size: 10pt; font-family: 宋体"><span style="font-family: Verdana"><span style="font-family: Verdana"><span style="font-size: 10pt">整个下来，一直都带著激动的心情，虽然不是所有都听得懂（没翻译），但感觉收获很大的。</span></span></span></span></p>
<p><span style="font-family: Verdana"><span style="font-family: Verdana"><span style="font-size: 10pt"><span style="font-size: 10pt; font-family: 宋体">最后抽奖，共三个人，没我。其中是一本签了名的</span><span style="font-size: 10pt; font-family: Arial">ASP.NET2.0</span><span style="font-size: 10pt; font-family: 宋体">技术内幕。<br />
<br />
Scott的Blog地址为：<font face="Verdana"><a href="http://weblogs.asp.net/scottgu/">http://weblogs.asp.net/scottgu/</a></font><br />
<br />
<img height="243" alt="" src="http://www.cnblogs.com/images/cnblogs_com/happyhzs2000/DSC_8102s.jpg" width="362" border="0" /></span></span></span></span></p>
 <img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1040040.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42999/" target="_blank">[新闻]微软20日启动最严厉反盗版验证：1小时黑屏1次</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>ViewState Decoder (2.2)</title><link>http://www.cnblogs.com/happyhzs2000/archive/2008/01/02/1023541.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Wed, 02 Jan 2008 09:48:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2008/01/02/1023541.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1023541.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2008/01/02/1023541.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1023541.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1023541.html</trackback:ping><description><![CDATA[<font style="font-family: Verdana" face="Courier New">一种查看ASP.NET 2.0 ViewState 的工具，包括查看 Control State。<br />
在<a href="http://www.pluralsight.com/toolcontent/ViewStateDecoder22.zip">这里</a>下载。参见以下截屏。<br />
<br />
<img height="476" alt="" src="http://www.pluralsight.com/images/decoderscreenshot.gif" width="760" border="0" /></font> 
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1023541.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42998/" target="_blank">[新闻]商业周刊：初创公司处境尴尬 IPO市场冷清</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 MVC Freamework blogs from ScotteGu</title><link>http://www.cnblogs.com/happyhzs2000/archive/2007/12/25/1013711.html</link><dc:creator>青松阳光</dc:creator><author>青松阳光</author><pubDate>Tue, 25 Dec 2007 02:53:00 GMT</pubDate><guid>http://www.cnblogs.com/happyhzs2000/archive/2007/12/25/1013711.html</guid><wfw:comment>http://www.cnblogs.com/happyhzs2000/comments/1013711.html</wfw:comment><comments>http://www.cnblogs.com/happyhzs2000/archive/2007/12/25/1013711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/happyhzs2000/comments/commentRss/1013711.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/happyhzs2000/services/trackbacks/1013711.html</trackback:ping><description><![CDATA[<font style="font-family: Verdana" face="Courier New"><a href="http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx"><font face="Courier New">ASP.NET MVC Framework</font></a><br />
<br />
<font face="Courier New"><a href="http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx"><font face="Courier New">ASP.NET MVC Framework (Part 1)</font></a><br />
<br />
<font face="Courier New"><a href="http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx"><font face="Courier New">ASP.NET MVC Framework (Part 2): URL Routing</font></a><br />
<br />
<font face="Courier New"><a href="http://weblogs.asp.net/scottgu/archive/2007/12/06/asp-net-mvc-framework-part-3-passing-viewdata-from-controllers-to-views.aspx"><font face="Courier New">ASP.NET MVC Framework (Part 3): Passing ViewData from Controllers to Views</font></a><br />
<br />
<font face="Courier New"><a href="http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-mvc-framework-part-4-handling-form-edit-and-post-scenarios.aspx"><font face="Courier New">ASP.NET MVC Framework (Part 4): Handling Form Edit and Post Scenarios</font></a></font></font></font></font></font> <br />
<br />
<font face="Courier New"><span style="font-family: Verdana"><font style="font-family: " face="Courier New">Please take care ScottGu's response comments</font>.</span></font>
<img src ="http://www.cnblogs.com/happyhzs2000/aggbug/1013711.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42997/" target="_blank">[新闻]Google北美总裁暗示:或裁员以削减成本应对危机</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></channel></rss>