﻿<?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/na57/</link><description>想说啥说啥.</description><language>zh-cn</language><lastBuildDate>Tue, 09 Feb 2010 23:59:15 GMT</lastBuildDate><pubDate>Tue, 09 Feb 2010 23:59:15 GMT</pubDate><ttl>60</ttl><item><title>ASP.NET MVC应用中一个诡异错误的处理</title><link>http://www.cnblogs.com/na57/archive/2009/09/15/1567068.html</link><dc:creator>Na57</dc:creator><author>Na57</author><pubDate>Tue, 15 Sep 2009 07:44:00 GMT</pubDate><guid>http://www.cnblogs.com/na57/archive/2009/09/15/1567068.html</guid><description><![CDATA[<p>阅读: 38 评论: 0 作者: <a href="http://www.cnblogs.com/na57/" target="_blank">Na57</a> 发表于 2009-09-15 15:44 <a href="http://www.cnblogs.com/na57/archive/2009/09/15/1567068.html" target="_blank">原文链接</a></p>今天的开发中，访问<span  style="font-family: 'lucida grande'; font-size: 13px; line-height: normal; white-space: pre; ">http://localhost:1672/Member/ChangePwd/dd</span>&nbsp;时页面总是报这样一个错误：
<div><span  style="font-family: Verdana; font-size: 11px; line-height: normal; ">
<h2 style="font-family: Verdana; font-weight: normal; font-size: 14pt; color: maroon; "><em>The view 'ChangePassword' or its master could not be found. The following locations were searched:<br />
~/Views/Member/dd.master<br />
~/Views/Shared/dd.master</em></h2>
<div><br />
</div>
<div><font  size="4"><span  style="font-size: 14px; line-height: 25px;">经过一个下午的测试，发现问题是这样的：</span></font></div>
<div><font  size="4"><span  style="font-size: 14px; line-height: 25px;">我的Action的代码里面，最后一句是：return View("ChangePassword", userName);</span></font></div>
<div><font  size="4"><span  style="font-size: 14px; line-height: 25px;"><br />
</span></font></div>
<div><font  size="4"><span  style="font-size: 14px; line-height: 25px;">原来问题在这里，View方法的其中一个重载方法的第二个参数是string类型，表示的是masterName。于是发现了这样一个错误。</span></font></div>
<div><font  size="4"><span  style="font-size: 14px; line-height: 25px;">最后，使用一个参数的View方法搞定。</span></font></div>
</span></div><img src="http://www.cnblogs.com/na57/aggbug/1567068.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/na57/archive/2009/09/15/1567068.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/na57/archive/2009/09/15/1567068.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>使用Enterprise Library 4.0 Logging 的问题</title><link>http://www.cnblogs.com/na57/archive/2009/09/08/1562572.html</link><dc:creator>Na57</dc:creator><author>Na57</author><pubDate>Tue, 08 Sep 2009 07:10:00 GMT</pubDate><guid>http://www.cnblogs.com/na57/archive/2009/09/08/1562572.html</guid><description><![CDATA[<p>阅读: 38 评论: 0 作者: <a href="http://www.cnblogs.com/na57/" target="_blank">Na57</a> 发表于 2009-09-08 15:10 <a href="http://www.cnblogs.com/na57/archive/2009/09/08/1562572.html" target="_blank">原文链接</a></p><span  style="font-family: Arial; font-size: 13px; line-height: normal; white-space: pre; ">将应用程序日志写近数据库里面遇到了如下的错误:</span>
<div><font  face="Arial" size="3"><span  style="font-size: 13px; line-height: normal; white-space: pre;"><br />
</span></font></div>
<div><font  face="Arial" size="3"><span  style="font-size: 13px; line-height: normal; white-space: pre;"><span  style="font-family: simsun; font-size: 14px; white-space: normal; line-height: 23px; ">创建 loggingConfiguration 的配置节处理程序时出错: 未能加载文件或程序集&#8220;Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&#8221;或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)</span></span></font></div>
<div><font  face="simsun"><span  style="line-height: 23px;"><br />
</span></font></div>
<div><font  face="simsun"><span  style="line-height: 23px;">原因：引用DLL文件的时候可能引用了本地编译的Debug版本。</span></font></div>
<div><font  face="simsun"><span  style="line-height: 23px;"><br />
</span></font></div>
<div><font  face="simsun"><span  style="line-height: 23px;">解决：直接从安装目录（一般为C:\Program Files\...）中引用DLL。</span></font></div><img src="http://www.cnblogs.com/na57/aggbug/1562572.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/na57/archive/2009/09/08/1562572.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/na57/archive/2009/09/08/1562572.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>8. Action过滤</title><link>http://www.cnblogs.com/na57/archive/2008/05/06/1185425.html</link><dc:creator>Na57</dc:creator><author>Na57</author><pubDate>Tue, 06 May 2008 09:00:00 GMT</pubDate><guid>http://www.cnblogs.com/na57/archive/2008/05/06/1185425.html</guid><description><![CDATA[<p>阅读: 239 评论: 0 作者: <a href="http://www.cnblogs.com/na57/" target="_blank">Na57</a> 发表于 2008-05-06 17:00 <a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185425.html" target="_blank">原文链接</a></p>      Action过滤<br id="ko:v0"><br id="ko:v1">原文: http://quickstarts.asp.net/3-5-extensions/mvc/ActionFiltering.aspx<br id="ko:v2"><br id="ko:v3">1. 介绍<br id="ko:v4">一般Action与用户动作是一对一的关系,用户的某一个动作对应一个特定的Action.<br id="j.lf0">然而,有时你可能会希望在Action执行的前后执行指定的操作,MVC中可以通过Action过滤器来实现这个功能.<br id="v57k0">Action过滤器是一个自定义的Attribute,它的应用范围包括:日志,身份认证和授权,输出缓存,Web抓取过滤,本地化,动态Action等.<br id="l_aq0"><br id="l_aq1">2. 实现一个Action过滤器<br id="l_aq2">Action过滤器必须派生自<span id="c_-n0" class="keyword">ActionFilterAttribute</span>抽象类，并实现<span id="c_-n1" class="keyword">OnActionExecuting</span> 和<span id="c_-n2" class="keyword">OnActionExecuted</span>两个方法。一个示例如下：<br id="xhq10"><pre id="xhq11">public class LoggingFilterAttribute : <font id="vg-n0" color="#ff0000">ActionFilterAttribute</font><br id="xhq12">{<br id="xhq13">    public override void <font id="vg-n1" color="#ff0000">OnActionExecuting</font>(FilterExecutingContext filterContext)<br id="xhq14">    {<br id="xhq15">        filterContext.HttpContext.Trace.Write("Starting: " + <br id="xhq16">        filterContext.ActionMethod.Name);<br id="xhq17">    }<br id="xhq18"><br id="xhq19">    public override void <font id="vg-n2" color="#ff0000">OnActionExecuted</font>(FilterExecutedContext filterContext)<br id="xhq110">    {<br id="xhq111">        if (filterContext.Exception != null)<br id="xhq112">        {<br id="xhq113">            filterContext.HttpContext.Trace.Write("Exception thrown");<br id="xhq114">        }<br id="xhq115">    }<br id="xhq116">}</pre>3. Action过滤器上下文<br id="p-0_0">过滤器上下文包括<span id="ekul0" class="keyword">FilterExecutingContext</span>和FilterExecutedContext两个，他们都派生自<span id="lqgg0" class="keyword">FilterContext</span>类，提供<span id="lqgg1" class="keyword">ActionMethod</span>属性，用于获取Action方法的信息。<br id="lqgg2"><span id="uys.0" class="keyword">FilterExecutingContext</span>包含一个Cancel属性，允许你取消正在执行的Action。<br id="uys.1"><span id="egpx0" class="keyword">FilterExecutedContent</span>包含<span id="z_.x0" class="keyword">Exception</span>和<span id="z_.x1" class="keyword">Exception</span>Handled属性。若Action执行期间没有错误发生，则Exception属性为null，若Exception属性不为null，且其他过滤器已经处理过这个异常，则<span id="z_.x1" class="keyword">Exception</span>Handled属性的值为true。<br id="jj_g0"><br id="jj_g1">4. 在控制器中使用过滤器<br id="mn7v0">给需要使用过滤器的Action方法加上想要的过滤器Attribute即可。如：<br id="w:we0"><pre id="w:we1">public class HomeController : Controller<br id="w:we2">{<br id="w:we3">    <font id="w:we4" color="#ff0000">[LoggingFilter]</font><br id="w:we5">    public void Index()<br id="w:we6">    {<br id="w:we7">        RenderView("Index");<br id="w:we8">    }<br id="w:we9">}</pre>5. 实现“控制器级”的过滤器<br id="rf5u0">可能出现一种情况：控制器中的所有Action方法都需要同一个过滤器。这是可以通过重写控制器类的<span id="o:p10" class="keyword">OnActionExecuting</span> 和 <span id="o:p11" class="keyword">OnActionExecuted方法来实现过滤器。<br id="vfgl0"><br id="vfgl1">6. Action过滤器的范围<br id="vfgl2">过滤器是可继承的。<br id="h0:p0"><br id="h0:p1">7. 过滤器的执行顺序<br id="h0:p2">过滤器提供了Order顺序来指定多个过滤器的执行顺序。Order的值必须为0或正数，若Order为-1，则表明不指定该过滤器的执行顺序，它将在所有被指定顺序的过滤器执行之后执行。另外，若两个过滤器的Order值相同将会产生异常。一个例子如下:<br id="pr8r0"></span><pre id="pr8r1">[Filter1(<font id="pr8r2" color="#ff0000">Order = 2</font>)]<br id="pr8r3">[Filter2(<font id="pr8r4" color="#ff0000">Order = 3</font>)]<br id="pr8r5">[Filter3(<font id="pr8r6" color="#ff0000">Order = 1</font>)]<br id="pr8r7">public void Index()<br id="pr8r8">{<br id="pr8r9">    RenderView("Index");<br id="pr8r10">}</pre>另外，过滤器的两个方法以及“控制器级”的过滤器的两个方法之间的执行顺序也有规定，详见原文。<br id="ht210"><br id="ht211">8. 过滤器执行顺序的例子<br id="z6770"><br id="vfgl3"> <img src="http://www.cnblogs.com/na57/aggbug/1185425.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185425.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185425.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>6. 视图和生成助手</title><link>http://www.cnblogs.com/na57/archive/2008/05/06/1185421.html</link><dc:creator>Na57</dc:creator><author>Na57</author><pubDate>Tue, 06 May 2008 08:58:00 GMT</pubDate><guid>http://www.cnblogs.com/na57/archive/2008/05/06/1185421.html</guid><description><![CDATA[<p>阅读: 92 评论: 0 作者: <a href="http://www.cnblogs.com/na57/" target="_blank">Na57</a> 发表于 2008-05-06 16:58 <a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185421.html" target="_blank">原文链接</a></p>      视图和生成助手<br id="hwkh0"><br id="hwkh1">原文：http://quickstarts.asp.net/3-5-extensions/mvc/MVCViews.aspx<br id="hwkh2"><br id="hwkh3">1. 介绍<br id="hwkh4">MVC框架支持任意模板引擎生成视图。默认地，MVC中使用.aspx页面、模板页及用户空间生成视图。<br id="vntc0"><br id="vntc1">2. 使用视图生成UI<br id="vntc2">控制器提供了“<span id="nze40" class="keyword">RenderView</span>”方法来生成视图，一个简单的例子如下：<br id="nze41"><pre id="myc00">public void Categories()<br id="myc01">{<br id="myc02">    List<Category> categories = northwind.GetCategories();<br id="myc03">    RenderView("Categories", categories);<br id="myc04">}</pre>“<span id="nze40" class="keyword">RenderView</span>”方法有两个参数：第一个是视图的名称，第二个是传递给该视图的参数,该参数可以通过视图的ViewData属性获得.<br id="af:c0"><br id="af:c1">3. 为Views目录添加授权<br id="xt2r0">MVC框架建议将全部视图文件（.aspx文件等）放到Views目录中，为了防止用户直接请求这些文件，必须对这个目录进行存取控制。<br id="ezeq0">具体方法：在Views目录下建立web.config文件，并在其system.web节点下加入以下配置：<br id="ezeq1"><pre id="ti-t0"><authorization><br id="ti-t1">  <deny users="*"/><br id="ti-t2"></authorization></pre>4. aspx页面视图<br id="i2eq0">作为视图使用的.aspx页面必须派生自<span id="ol4g0" class="keyword">"ViewPage</span>",或实现"IView"接口.或者,也可以派生自ViewPage<T>类.<br id="eled0">页面类中使用"ViewData"属性获取视图相关的数据.<br id="e7720">区别在于,派生自<span id="ol4g0" class="keyword">"ViewPage</span>"时,ViewData是一个字典容器,而派生自"ViewPage<T>"时,ViewData返回的是T类型的对象.例如:<br id="t1_g0">使用ViewPage:<br id="d8hl0">    public partial class Index : ViewPage<br id="g60l0">    {<br id="g60l1">        public Index()<br id="g60l2">        {<br id="g60l3">            <font id="g60l4" color="#ff0000">DateTime dt = Convert.ToDateTime(ViewData["dt"]);</font><br id="g60l5">        }<br id="g60l6">    }<br id="d8hl1"><br id="d8hl2">使用ViewPage<T>:<br id="d8hl3">    public partial class Index : ViewPage<DateTime><br id="d8hl4">    {<br id="d8hl5">        public Index()<br id="d8hl6">        {<br id="d8hl7">            <font id="g60l7" color="#ff0000">DateTime dt = ViewData;</font><br id="d8hl8">        }<br id="d8hl9">    }<br id="g60l8"><br id="g60l9">5. 母版页视图<br id="iz8n0">MVC中的母版页必须派生自"ViewMasterPage"?<br id="r_yr0"><br id="r_yr1">6. 初始化ViewData<br id="tb1w0">ViewData的初始化工作在控制器类的Action方法中进行.由于ViewData可能有两种不同的类型,因此,初始化ViewData有两种不同的方法.<br id="d10s0">若视图派生自ViewPage,则ViewData为一个字典容器,一个初始化的例子如下:<br id="m8ci0">public SampleController : Controller {<br id="m8ci2">    public void Welcome()<br id="xrjs0">    {<br id="m8ci3">        <font id="m8ci4" color="#ff0000">ViewData["FirstName"] = "Joe";<br id="m8ci5">        ViewData["LastName"] = "Healy";</font><br id="ol4e0">        RenderView("Welcome");<br id="rmxh0">    }<br id="rmxh1">}<br id="hs870">当视图派生自ViewPage<T>时,初始化的例子如下:<br id="fpc:0"><pre id="g73v0">public class <font id="g73v1" color="#ff0000">SampleViewData</font> {<br id="g73v2">    public string FirstName { get; set; }<br id="g73v3">    public string LastName { get; set; }<br id="g73v4">}<br id="g73v5"><br id="g73v6">public SampleController : Controller {<br id="g73v7">    public void Welcome() {<br id="g73v8">        <font id="g73v9" color="#ff0000">SampleViewData viewData = new SampleViewData();<br id="g73v10">        viewData.FirstName = "Joe";<br id="g73v11">        viewData.LastName = "Healy";</font><br id="g73v12">        RenderView("Welcome", viewData);<br id="g73v13">    }<br id="g73v14">}<br id="g73v15"><br id="g73v16">7. 在Action之间传递状态<br id="bxmd0">控制器中使用"<span id="j8420" class="keyword">RedirectToAction</span>"方法重定向Action,在调用此方法之前,可以初始化"TempData",用于传递参数到下一个Action中.<br id="j8421"><br id="j8422">8. 生成助手<br id="s1l.0">MVC提供了很多帮助类,可以通过<span id="s1l.1" class="keyword">ViewPage</span>, <span id="s1l.2" class="keyword">ViewUserControl</span>, 和 <span id="s1l.3" class="keyword">ViewMasterPage</span>类中相应的属性对它们进行调用.</pre><img src="http://www.cnblogs.com/na57/aggbug/1185421.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185421.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185421.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>5. 控制器和Action方法</title><link>http://www.cnblogs.com/na57/archive/2008/05/06/1185418.html</link><dc:creator>Na57</dc:creator><author>Na57</author><pubDate>Tue, 06 May 2008 08:57:00 GMT</pubDate><guid>http://www.cnblogs.com/na57/archive/2008/05/06/1185418.html</guid><description><![CDATA[<p>阅读: 170 评论: 0 作者: <a href="http://www.cnblogs.com/na57/" target="_blank">Na57</a> 发表于 2008-05-06 16:57 <a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185418.html" target="_blank">原文链接</a></p>控制器和Action方法<br id="x4mw0"><br id="x4mw1">原文：http://quickstarts.asp.net/3-5-extensions/mvc/MVCControllerActions.aspx<br id="x4mw2"><br id="x4mw3">1. 介绍<br id="x4mw4">控制器的职责：定位并执行Action方法，并确保它能正确执行；获取Action方法所需的参数并传递给它；捕获Action方法执行期间出现的错误；提供“<span id="sn410" class="keyword">WebFormViewFactory</span>”类以便生成ASP.NET页面类型的视图。<br id="sn411"><br id="p8hs0">一个简单的示例：<br id="p8hs1"><pre id="p8hs2">namespace MvcApplication.Controllers<br id="p8hs3">{<br id="p8hs4">    public class HomeController : Controller<br id="p8hs5">    {<br id="p8hs6">        public void Index()<br id="p8hs7">        {<br id="p8hs8">            RenderView("Index");<br id="p8hs9">        }<br id="p8hs10"><br id="p8hs11">        public void About()<br id="p8hs12">        {<br id="p8hs13">            ViewData["CompanyName"] = "Contoso";<br id="p8hs14">            RenderView("About");<br id="p8hs15">        }<br id="p8hs16">    }<br id="p8hs17">}</pre>2. Action方法<br id="q4c:0">MVC框架默认认为所有public方法都是Action方法。若不想让某个public方法成为Action方法，应该对其使用“<span id="v8op0" class="keyword">NonActionAttribute</span>”属性标记。<br id="g8-i0"><br id="g8-i1">3. Action方法的参数<br id="g8-i2">默认地，Action方法的参数是一组键值对，它们来自Form表单、查询字符串和cookie。<br id="qdto0">控制器基类<span id="qdto1" class="keyword">Controller负责把来自表单数据和</span><span id="jb280" class="keyword">RouteData实例的</span><span id="qdto1" class="keyword">参数传给Action方法。当参数值无法解析时，若参数时引用或Nullable类型，则传递null给它，否则则抛出异常。<br id="zfbn0">为了直接存取URL中的数据，控制器提供了Request和Response类，他们的语义对应于</span><span id="wj.n0" class="keyword">HttpRequest</span> 和 <span id="wj.n1" class="keyword">HttpResponse。下面是一个简单的例子：<br id="jm2c0"></span><pre id="jm2c1">public void Detail()<br id="jm2c2">{<br id="jm2c3">    int id = Convert.ToInt32(Request["id"]);<br id="jm2c4">}</pre>4. 自动映射Action方法的参数<br id="qch80">当HTTP请求中包含与Action方法的参数名字相同的参数时，该参数的值将被自动传递给Action方法。另外，MVC框架同样支持可选参数，当Action方法的参数为nullable类型，且为传递给此参数任何值时，控制器将传递null给此参数。下面是一个示例：<br id="m-8j0"><pre id="xmn40">public void ShowArticles(DateTime date)<br id="xmn41">{<br id="xmn42">    if(!date.HasValue)<br id="xmn43">    {<br id="xmn44">        date = DateTime.Now;<br id="xmn45">    }<br id="xmn46">    // ...<br id="xmn47">}</pre>5. 处理未知Action<br id="yjbm0">当控制器处理一个未知的Action时，它将抛出<span id="c86.0" class="keyword">HandleUnknownAction异常，控制器默认的处理方式是返回</span>HTTP 404错误。另外，可以通过重写“<span id="iwf90" class="keyword">HandleUnknownError</span>”方法实现自定义的错误处理。下面是一个例子：<br id="iwf91"><pre id="iwf92">public void override HandleUnknownError(string action) {<br id="iwf93">    // Redirect to a search page where the unknown action is <br id="iwf94">    // the search query. Determine when to show the search page <br id="iwf95">    // based on the result of calling a ShouldShowSearch() method.<br id="iwf96">    if (ShouldShowSearch(action) == true) <br id="iwf97">    {<br id="iwf98">        RedirectToAction("search", action );<br id="iwf99">        return;<br id="iwf910">    }<br id="iwf911">    base.HandleUnknownError(action);<br id="iwf912">}<br id="iwf913"></pre><img src="http://www.cnblogs.com/na57/aggbug/1185418.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185418.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185418.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>2. 创建基本的MVC项目</title><link>http://www.cnblogs.com/na57/archive/2008/05/06/1185414.html</link><dc:creator>Na57</dc:creator><author>Na57</author><pubDate>Tue, 06 May 2008 08:56:00 GMT</pubDate><guid>http://www.cnblogs.com/na57/archive/2008/05/06/1185414.html</guid><description><![CDATA[<p>阅读: 108 评论: 0 作者: <a href="http://www.cnblogs.com/na57/" target="_blank">Na57</a> 发表于 2008-05-06 16:56 <a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185414.html" target="_blank">原文链接</a></p>创建基本的MVC项目<br id="u:yu0"><br id="u:yu1">原文:<a title="http://quickstarts.asp.net/3-5-extensions/mvc/MVCCreatingMVCProject.aspx" href="http://quickstarts.asp.net/3-5-extensions/mvc/MVCCreatingMVCProject.aspx" id="kguj">http://quickstarts.asp.net/3-5-extensions/mvc/MVCCreatingMVCProject.aspx</a> <br id="wyrd0"><br id="wyrd1">1. 创建一个新的MVC项目.<br id="vql.0"><br id="wyrd2">2. 项目中各个目录及文件的说明.<br id="i8pn0">Content :     包含内容文件,如css,jpg等.<br id="m:640">Controllers:   包含控制器类<br id="iwpb0">Models :       包含模型类,包含数据提供程序等.<br id="uiqj0">Views :        包含.aspx,母版页等文件. 每个aspx文件都必须使用项目提供的Site.Master母版页.<br id="uiqj1">Default.aspx: 空文件,必须的,不可删除.<br id="uh:c0">Global.asax :　包含了注册URL重定向的代码.<br id="g3.50"><br id="g3.51">3. 添加一个控制器类.<br id="pau00">使用"MVC Cotroller Class"模板.<br id="pau01"><br id="pau02">4. 添加一个视图<br id="k1wj0">使用"MVC View Content Page"模板,选择"Site.Master"母版页.<br id="k1wj1"><br id="k1wj2">5. 为控制器添加一个Action方法.<br id="i.vm0">Action方法必须是public,且返回类型为void的?<br id="i.vm1">此方法的参数将由URL参数传入.<br id="i.vm2"><br id="mqyo0">6. 为视图添加内容<br id="mqyo1">为Action方法添加链接应该使用"Html.ActionLink"方法<br id="lzwh0"><br id="mqyo2">7. 测试.<br id="u:yu2">      <br id="vql.1"><img src="http://www.cnblogs.com/na57/aggbug/1185414.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185414.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185414.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>3. URL路由</title><link>http://www.cnblogs.com/na57/archive/2008/05/06/1185412.html</link><dc:creator>Na57</dc:creator><author>Na57</author><pubDate>Tue, 06 May 2008 08:56:00 GMT</pubDate><guid>http://www.cnblogs.com/na57/archive/2008/05/06/1185412.html</guid><description><![CDATA[<p>阅读: 159 评论: 0 作者: <a href="http://www.cnblogs.com/na57/" target="_blank">Na57</a> 发表于 2008-05-06 16:56 <a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185412.html" target="_blank">原文链接</a></p>URL路由<br id="uoe70"><br id="uoe71">原文 : http://quickstarts.asp.net/3-5-extensions/mvc/URLRouting.aspx<br id="uoe72"><br id="uoe73">1. 介绍<br id="uoe74"><br id="uoe75">2. 定义URL路由<br id="thv90">URL路由包括一个URL模式定义,在模式定义中,"{}"定义占位符,"/"和"."分割各个字符串.<br id="yqr.0">当URL请求字符串被URL模式解析时,占位符和具体的值组成"键值对".<br id="yqr.1">一般,URL路由在Global.asax文件的<span id="j9gb0" class="keyword">Application_Start方法中被定义.<br id="sh::0">示例代码:<br id="sh::1"></span><pre id="sh::2">protected void Application_Start(object sender, EventArgs e)<br id="sh::3">{<br id="sh::4">    RegisterRoutes(RouteTable.Routes);<br id="sh::5">}<br id="sh::6"><br id="sh::7">public static void RegisterRoutes(RouteCollection routes)<br id="sh::8">{<br id="sh::9">    <font id="h-ld0" color="#ff0000">routes.Add(new Route("Category/{action}/{categoryName}",new CategoryRouteHandler() ));</font><br id="sh::14">}<br id="sh::15"><br id="sh::16">3. 为路由参数设置默认值.<br id="cz200">若不设置默认值,则URL路由要求所有占位符都必须赋值才能匹配.<br id="cz201">示例代码:<br id="pvlr0">public static void RegisterRoutes(RouteCollection routes)<br id="pvlr1">{<br id="pvlr2">  routes.Add(new Route("Category/{action}/{categoryName}", new CategoryRouteHandler())<br id="olp_0">                {<br id="hzw_0">                    <font id="qo2c0" color="#ff0000">Defaults = new RouteValueDictionary <br id="hzw_1">                                    {<br id="cc8y0">                                        {"categoryName", "food"}, {"action", "show"}<br id="cc8y1">                                    }</font><br id="hzw_2">                }<br id="pvlr7">  );<br id="pvlr8">}<br id="c5a00"><br id="l:qn0">4. 捕获未知数量的参数.<br id="l:qn1">使用"*"通配符,如:"<span id="wix10" class="code">query/{queryname}/{*queryvalues}</span>",<br id="wix11">使用它可以匹配"/query/select/bikes/onsale", 则queryvalues = "bikes/onsale".<br id="lq130"><br id="x8.d0">5. 为URL模式添加约束.<br id="x8.d1">示例代码:<br id="x8.d2">public static void RegisterRoutes(RouteCollection routes)<br id="h-ld1">{<br id="h-ld2">    routes.Add(new Route("{locale}/{year}" , new ReportRouteHandler())<br id="h-ld7">                    {<br id="h-ld8">                        <font id="abz30" color="#ff0000">Constraints = new RouteValueDictionary <br id="h-ld9">                                            {<br id="kwcy0">                                                {"locale", "{a-z}{2}-{A-Z}{2}"},{year, @"d{4}"}<br id="kwcy1">                                            }</font><br id="h-ld10">                    }<br id="nvig0">    );<br id="h-ld11">}<br id="nvig1"><br id="nvig2">6. 使用URL路由信息创建链接.<br id="re-y0">示例代码:<br id="gopg0">HyperLink1.NavigateUrl = RouteTable.Routes.GetVirtualPath<br id="re-y1">  (context,<br id="re-y2">  new RouteValueDictionary { <br id="re-y3">    { "categoryName", "beverages" }, <br id="re-y4">    {"action", "summarize" }}<br id="re-y5">  ).VirtualPath;<br id="re-y6">将获得一个包含"Category/summarize/beverages"的超链接.</pre>      <img src="http://www.cnblogs.com/na57/aggbug/1185412.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185412.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185412.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>4. 用MVC实现URL路由</title><link>http://www.cnblogs.com/na57/archive/2008/05/06/1185409.html</link><dc:creator>Na57</dc:creator><author>Na57</author><pubDate>Tue, 06 May 2008 08:55:00 GMT</pubDate><guid>http://www.cnblogs.com/na57/archive/2008/05/06/1185409.html</guid><description><![CDATA[<p>阅读: 154 评论: 0 作者: <a href="http://www.cnblogs.com/na57/" target="_blank">Na57</a> 发表于 2008-05-06 16:55 <a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185409.html" target="_blank">原文链接</a></p>用MVC实现URL路由<br id="my3i0"><br id="my3i1">原文：http://quickstarts.asp.net/3-5-extensions/mvc/MvcUrlRouting.aspx<br id="my3i2"><br id="my3i3">1. 介绍<br id="my3i4">MVC框架使用URL路由将URL映射到控制器类及Action方法。<br id="my3i5">URL路由自动解析URL中的变量，并将他们作为参数传递给Action方法。<br id="pnmo0"><br id="n8:t0">2. 默认路由<br id="s.et0">MVC提供了一些默认URL路由设置，将URL以简单的方式映射到控制器和Action方法。<br id="s.et1"><br id="b0ve0">3. 映射URL到控制器和Action方法<br id="b0ve1">MVC使用<span id="l0w70" class="keyword">UrlRoutingModule</span>对象捕获URL请求，然后使用<span id="nquh0" class="keyword">MvcHandler</span>对请求进行处理。<br id="wn-e0">一个控制器类必须实现“<span id="fb040" class="keyword">System.Web.MVC.IController</span>”接口，或派生自“<span id="fb041" class="keyword">System.Web.MVC.Controller</span>”，并且以“Controller”结尾。<br id="ievj0">Action方法使用“<span id="e3l90" class="keyword">ControllerAction</span>”属性进行标记。<br id="wn-e1">      <img src="http://www.cnblogs.com/na57/aggbug/1185409.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185409.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/na57/archive/2008/05/06/1185409.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>Google笔记本迈向烂笔头</title><link>http://www.cnblogs.com/na57/archive/2007/12/04/982202.html</link><dc:creator>Na57</dc:creator><author>Na57</author><pubDate>Tue, 04 Dec 2007 05:37:00 GMT</pubDate><guid>http://www.cnblogs.com/na57/archive/2007/12/04/982202.html</guid><description><![CDATA[<p>阅读: 161 评论: 0 作者: <a href="http://www.cnblogs.com/na57/" target="_blank">Na57</a> 发表于 2007-12-04 13:37 <a href="http://www.cnblogs.com/na57/archive/2007/12/04/982202.html" target="_blank">原文链接</a></p>曾经为了方便做笔记而写了“烂笔头”的程序代码，其核心目的是为了能将笔记随心所欲的分类。但是，用了一段时间之后，我发现“烂笔头”的基础结构已经不能支持我心中所想的功能，于是，我放弃了它，准备从头再来。<br>在那以后一段时间，Google笔记本横空出世，提供了将笔记条目垂直分类的功能。然而，垂直分类始终是没有标签来得方便的，因此，用了一段时间之后，我又放弃了它。<br>在那以后，我开始用饭否，开始觉得不错，可以将自己的想法通过QQ记录下来，而不用打开网页。后来觉得，饭否也没有标签功能，还是不好使，第三次放弃。<br>在那之后，我的笔记基本都是存在word文档里了，我几乎已经对互联网上有的笔记软件失去了信心。<br>今天，我再一次打开Google笔记本，准备将里面记录的论文笔记翻出来看看。打开Google笔记本，让我眼前一亮，它现在支持标签了！<br>现在Google笔记本的模式基本上已经像我从前心目中所想的“烂笔头”了。然而，世界是变化的，我的想法也是，自从一头钻入语义网的研究之后，我总希望我们所看到的信息都具备很强的语义。<br>现在我可以自我YY一下，Google笔记本的发展速度已经赶不上我了。哈哈。<br><br><img src="http://www.cnblogs.com/na57/aggbug/982202.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/na57/archive/2007/12/04/982202.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/na57/archive/2007/12/04/982202.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>XML and Databases 笔记</title><link>http://www.cnblogs.com/na57/archive/2007/12/04/981952.html</link><dc:creator>Na57</dc:creator><author>Na57</author><pubDate>Tue, 04 Dec 2007 02:08:00 GMT</pubDate><guid>http://www.cnblogs.com/na57/archive/2007/12/04/981952.html</guid><description><![CDATA[<p>阅读: 132 评论: 0 作者: <a href="http://www.cnblogs.com/na57/" target="_blank">Na57</a> 发表于 2007-12-04 10:08 <a href="http://www.cnblogs.com/na57/archive/2007/12/04/981952.html" target="_blank">原文链接</a></p>作为一种“数据库”格式，XML有一些优势：例如，它是自描述的（所用的标记描述了数据的结构和类型，尽管缺乏语义），可交换的(portable)，能够以树型或图形结构描述数据。同样它也有缺点，例如，它显得有些繁琐，由于要对它进行解析和文本转换，所以数据访问速度较慢。<br><br>XML及其周边技术是否可以算作“数据库” -- 数据库管理系统(DBMS)。答案是“在某种程度上是(sort 
of)”。好的一面是，XML提供了许多数据库所具备的东西：存储(XML文档), 模式(DTD, XML schema，RElAX NG 等等), 
查询语言(XQuery, XPath, XQL, XML-QL, QUILT等等），编程接口(SAX, 
DOM,JDOM)等等。不好的一面在于，它缺少一些作为实用的数据库所应具备的特性：高效的存储，索引，安全，事务和数据一致性，多用户访问，触发器，在查询多个文件等等。<br><p>因此，尽管在数据量小、用户少和性能要求不太高的环境下，可以将XML文档用作数据库，但是却不适用于用户量大、数据完整性以及性能要求高的情形。</p><p>将一个XML文件的schema映射到数据库的schema有两种方法：<strong>基于表格的映射</strong>和<strong>对象-关系映射</strong>。</p><p>基于表格的映射把XML文件看作一个（或一组）表格，将各字段数据以子元素的形式或以属性的形式存储。</p>基于表格的映射对存取关系型数据比较适用，比如在两个关系型数据库之间转换数据。其明显不足就是不适于格式不符的XML文件。<br>对象-关系的映射方式将XML文件中的数据视为特定的对象树的模型。在这个模型中，元素及其类型、元素内容或混合内容（<a name="complex"></a><strong>复合元素类型</strong>）通常被视为类。只具有PCDATA内容的元素(<a name="simple"><strong>简单元素类型</strong></a>)、属性以及PCDATA都被当作简单属性。然后通过传统的对象-关系映射技术或 
SQL 3的对象视图将该模型映射到关系型数据库。也就是说，类被映射到表格，简单属性被映射到字段，而值为对象属性被映射为成对的主键/外键(primary 
key/foreign key)。<br><br>原生XML数据库的数据存储<br><br><p>还可以将XML文件中的数据存储在原生XML数据库(native XML 
database)中。这么做有几个理由。首先，当你的数据是半结构化的数据时。也就是说，它的结构是普通的，但是如果将其映射到关系数据库，结果是要么出现大量空值(null)的字段，要么表格的数量过多，浪费空间或效率低下。虽然半结构化的数据可存储到面向对象的或层次型数据库中，你还可以选择将它以XML文件的形式存储于原生XML数据库。 
</p>
<p>将数据存储在原生XML数据库中的第二个理由是读出速度。根据XML数据库存储数据的物理方式的不同，数据的读出速度可以做到比关系型数据库[的读取速度]快得多。其原因是，原生XML数据库对整个文件一起进行物理存储，和[表示]文件各个部分的物理(而不是逻辑)指针可采用同一存储策略。这就可以不使用连接(joins)或只使用物理连接读取文件，无论哪种情况都比关系型数据库所用的逻辑联结要快。 
</p>
<p>以上述<a href="#salesexample">销售订单文件</a>为例。在关系型数据库中，它可能被存为四个表格 -- SalesOrders, 
Items, Customers, 和 Parts -- 
读取文件时需要将这些表格结合起来。在原生XML数据库中，整个文件可被存储在磁盘的一个地方，在读取文件或其片断时只需要一次查找和一次读取操作。关系数据库在读取数据时则需要四次查找以及至少四次读取操作。 
</p>
<p>这样做的一个明显缺点就是，只有数据的读取顺序和写入磁盘的顺序相同时，才可以提高速度。如果你想要的数据视图不同，比如只想要客户及其订单列表，性能可能比关系数据库更差。所以，如果你的应用中是单个数据视图为主，为了提高性能，才可以考虑将数据存储到原生XML数据库。 
</p>
<p>将数据存储在原生XML数据库中的第三个理由是你想利用XML的独有特性，如执行XML查询。由于今天以数据为中心的应用几乎没有这样做的，而且关系数据库正在逐步支持XML查询语言，这个理由越来越不充分。 
</p>
<p>将数据存储在原生XML数据库中的一个问题是，大多数原生数据库只能以XML[的形式]返回数据。（支持元素和属性到应用程序变量绑定的只是少数）。如果你的应用程序需要另一种数据格式（很有可能），使用数据之前必须先解析XML。对本地的应用程序而言显然是个缺点，而这种前期准备在(比如)ODBC中就不存在。对于将XML作为数据载体使用的分布式应用程序而言，这个问题不很严重，因为不管用的是哪种数据库，这种前期工作必须要有。</p><br><img src="http://www.cnblogs.com/na57/aggbug/981952.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/na57/archive/2007/12/04/981952.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/na57/archive/2007/12/04/981952.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item></channel></rss>