<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_菜菜灰 .Net 博客</title><subtitle type="text">不积小流，无以成江河；不积跬步，无以至千里。</subtitle><id>http://feed.cnblogs.com/blog/u/28245/rss</id><updated>2011-11-01T08:33:54Z</updated><author><name>菜菜灰</name><uri>http://www.cnblogs.com/caicaihui/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caicaihui/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/28245/rss"/><entry><id>http://www.cnblogs.com/caicaihui/archive/2011/11/01/2231830.html</id><title type="text">【原创】封装数据库操作以及在Razol引擎中使用</title><summary type="text">数据库操作是一件繁琐的事情，不停的读取，增加，删除等行为，而且存在大量的拼接字符串操作，稍微不注意很有可能就出错，为此我们要简化数据库操作的代码来让数据库操作变的更为简单一点</summary><published>2011-11-01T08:34:00Z</published><updated>2011-11-01T08:34:00Z</updated><author><name>菜菜灰</name><uri>http://www.cnblogs.com/caicaihui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/caicaihui/archive/2011/11/01/2231830.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caicaihui/archive/2011/11/01/2231830.html"/><content type="html">&lt;p&gt;数据库操作是一件繁琐的事情，不停的读取，增加，删除等行为，而且存在大量的拼接字符串操作，稍微不注意很有可能就出错，为此我们要简化数据库操作的代码来让数据库操作变的更为简单一点，自从发表上一篇文章&lt;a id="ctl02_TitleUrl" href="http://www.cnblogs.com/caicaihui/archive/2011/10/24/2222433.html"&gt;MVC3中使用WebMatrix.Data 来操作数据库&lt;/a&gt;，受到很多老鸟的指点，我也很赞同不在页面上直接写sql语句，当然我自己也不会这么写，只是在某些特殊的场景可能才会用到。&lt;/p&gt;&#xD;
&lt;p&gt;另外我不得不说Razol是个非常强大的模板引擎，之前我介绍的是&lt;a id="ctl02_TitleUrl" href="http://www.cnblogs.com/caicaihui/archive/2008/07/07/1237756.html"&gt;推荐一个模板引擎 - templateengine&lt;/a&gt; 。同时Razol非常适合在CMS系统中作为模板引擎的，功能强大，代码简介，这都是大家向往的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1 读取操作&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;var db = DatabaseHelper.Selete("c_user");&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;Rozal中使用，读取的表为c_user，返回的类型是IEnumerable&amp;lt;dynamic&amp;gt;，所以可以直接编译而不需要再转换类型了。&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;&amp;lt;ul&amp;gt;&#xD;
    @foreach (var item in db)&#xD;
    {&#xD;
        &amp;lt;li&amp;gt;@item.ID - @item.Name - @item.Password&amp;lt;/li&amp;gt;&#xD;
    }&#xD;
&amp;lt;/ul&amp;gt;&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;Selete方法实现了四个重载方法&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;//读取id为1的数据&#xD;
DatabaseHelper.Selete("c_user","id=1");&#xD;
&#xD;
//读取前10条，classid为1的数据&#xD;
DatabaseHelper.Selete("c_user","10","classid=1");&#xD;
&#xD;
//读取前10条，classid为1的数据，并且排序方式是inputdate desc&#xD;
DatabaseHelper.Selete("c_user","10","classid=1","inputdate desc");&#xD;
&#xD;
//引入参数，防止sql注入&#xD;
DatabaseHelper.Selete("c_user","10","classid=@0 and title='@1'","inputdate desc","1","test");&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;2 添加操作&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;支持Dictionary&amp;lt;string, string&amp;gt;和Hashtable&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;Dictionary&amp;lt;string, string&amp;gt; d = new Dictionary&amp;lt;string, string&amp;gt;();&#xD;
d.Add("name", "title11");&#xD;
d.Add("Password", "xxxx");&#xD;
&#xD;
DatabaseHelper.Insert("c_user", d);&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;Hashtable ht = new Hashtable();&#xD;
ht.Add("name", "title1xxxx");&#xD;
ht.Add("Password", "yyyyy");&#xD;
DatabaseHelper.Insert("c_user", ht);&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;3 更新操作&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;同样支持Dictionary&amp;lt;string, string&amp;gt;和Hashtable&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;Dictionary&amp;lt;string, string&amp;gt; d = new Dictionary&amp;lt;string, string&amp;gt;();&#xD;
d.Add("name", "title11");&#xD;
d.Add("Password", "xxxx");&#xD;
&#xD;
DatabaseHelper.Update("c_user", d, "id=@0","6")&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;Hashtable ht = new Hashtable();&#xD;
ht.Add("name", "title1xxxx");&#xD;
ht.Add("Password", "yyyyy");&#xD;
DatabaseHelper.Update("c_user", ht, "id=@0","6")&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;4 删除操作&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;DatabaseHelper.Delete("c_user", "id=@0", "3")&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;DatabaseHelper.Delete("c_user")&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;5 统计数据&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;var count = DatabaseHelper.Count("c_user");&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;当前有 @count 条数据&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;同时支持参数&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;DatabaseHelper.Count("c_user","classid=@0","1")&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;6 返回某行某列的值&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;返回字段名为name，id为1的值&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;var value = DatabaseHelper.Value("c_user", "name", "id=1");&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;数据库操作都是根据WebMatrix.Data来进行封装的，欢迎大家多提意见。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/caicaihui/aggbug/2231830.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/caicaihui/archive/2011/11/01/2231830.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/caicaihui/archive/2011/10/24/2222810.html</id><title type="text">【原创】.Net4.0中使用Razor制作多风格网站</title><summary type="text">文章比较简单，主要实现的是一种思想，借助Razor引擎实现同一网站下不同的模版风格。</summary><published>2011-10-24T08:28:00Z</published><updated>2011-10-24T08:28:00Z</updated><author><name>菜菜灰</name><uri>http://www.cnblogs.com/caicaihui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/caicaihui/archive/2011/10/24/2222810.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caicaihui/archive/2011/10/24/2222810.html"/><content type="html">&lt;p&gt;文章比较简单，主要是一种思想，使用Razor之前须安装MVC3，然后在VS里创建网站，选择Asp.Net 网站(Razor)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102416081270.gif" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;建立好之后项目会自动生成一些文件，我一般喜欢纯净一点的环境，留下web.config文件，把多余的文件都给删掉，然后建立下面的结构。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102416123495.gif" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Templates下有2个网站风格Default和Blue，下面是Default各个文件的代码&lt;/p&gt;&#xD;
&lt;p&gt;Templates/Default/style.css文件代码&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102416160861.gif" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Templates/Default/Default.cshtml文件代码&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102416171966.gif" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Templates/Default/About.cshtml文件代码&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102416180697.gif" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Templates/Default/_Layout.cshtml文件代码&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102416185866.gif" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;为了实现具体的功能，Blue风格模版代码我只就修改CSS文件，代码就不帖了。&lt;/p&gt;&#xD;
&lt;p&gt;最关键的是Default.cshtml首页文件的代码，通过var temaplates = "Blue";来指定模版目录，通过UrlData来查找模版目录下的文件，如下&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102416212564.gif" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;本文主要实现的是一种思路，代码未经优化，未做进步一封装。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/caicaihui/aggbug/2222810.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/caicaihui/archive/2011/10/24/2222810.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/caicaihui/archive/2011/10/24/2222433.html</id><title type="text">MVC3中使用WebMatrix.Data 来操作数据库</title><summary type="text">使用WebMatrix.Data可以简化对数据库操作的代码，杜绝sql注入漏洞，并且支持多种数据库，最重要的是完全可以在Razor中使用。</summary><published>2011-10-24T03:15:00Z</published><updated>2011-10-24T03:15:00Z</updated><author><name>菜菜灰</name><uri>http://www.cnblogs.com/caicaihui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/caicaihui/archive/2011/10/24/2222433.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caicaihui/archive/2011/10/24/2222433.html"/><content type="html">&lt;p&gt;使用WebMatrix.Data可以简化对数据库操作的代码，杜绝sql注入漏洞，并且支持多种数据库，最重要的是完全可以在Razor中使用。&lt;/p&gt;&#xD;
&lt;p&gt;我们首先来看一段优雅的代码。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102410445342.gif" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如上代码就是使用WebMatrix.Data在Razor模板引擎中来操作数据库，非常简单。使用WebMatrix.Data前需要先引用下WebMatrix.Data.dll组件，在ASP.NET Web Pages的安装目录下能找到，如C:\Program Files\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies。&lt;/p&gt;&#xD;
&lt;p&gt;第二步我们需要在web.config加入数据库链接代码，如下，天然支持多种数据库，目前我仅测试过access和mssql数据库，sqlite未测试成功过。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102410495879.gif" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;WebMatrix.Data自带很多方法，如添加，更新，删除操作，如下图为添加操作&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102411110356.gif" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;更多的功能等待你的挖掘。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/caicaihui/aggbug/2222433.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/caicaihui/archive/2011/10/24/2222433.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/caicaihui/archive/2011/10/23/2221859.html</id><title type="text">【原创】MVC3在win 2003虚拟主机上的调试</title><summary type="text">网上也有很多MVC3在IIS6下的调试方法，但是前提都是必须安装MVC框架，在虚拟主机中，服务商是肯定不会安装MVC3框架，所以我们只能自己动手了。</summary><published>2011-10-23T08:28:00Z</published><updated>2011-10-23T08:28:00Z</updated><author><name>菜菜灰</name><uri>http://www.cnblogs.com/caicaihui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/caicaihui/archive/2011/10/23/2221859.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caicaihui/archive/2011/10/23/2221859.html"/><content type="html">&lt;p&gt;网上也有很多MVC3在IIS6下的调试方法，但是前提都是必须安装MVC框架，在虚拟主机中，服务商是肯定不会安装MVC3框架，所以我们只能自己动手了。&lt;/p&gt;&#xD;
&lt;p&gt;在IIS6中调试MVC3有几个先决条件&lt;/p&gt;&#xD;
&lt;p&gt;1 安装IIS6&lt;/p&gt;&#xD;
&lt;p&gt;2 安装.Net 4.0，并选中.Net 4.0&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102316234574.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;3 拷贝MVC3中所需要的dll文件放到网站bin目录下，总共7个dll文件，在本地安装的MVC3中都能找到。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img alt="" src="http://pic002.cnblogs.com/images/2011/24686/2011102316251281.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;按照以上方法必定能在iis6中运行mvc3项目。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/caicaihui/aggbug/2221859.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/caicaihui/archive/2011/10/23/2221859.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/caicaihui/archive/2011/05/12/2044236.html</id><title type="text">关于软件多版本升级的一些思考</title><summary type="text">最近一直在思考web软件的升级的管理，之前都是单独写的，一个一个版本的升级，但是后来发现夸版本升级比较麻烦，随着版本的升级，代码越来越多，代码不能重用，一直想不到一个即简单代码又简洁的方法。</summary><published>2011-05-12T04:48:00Z</published><updated>2011-05-12T04:48:00Z</updated><author><name>菜菜灰</name><uri>http://www.cnblogs.com/caicaihui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/caicaihui/archive/2011/05/12/2044236.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caicaihui/archive/2011/05/12/2044236.html"/><content type="html">&lt;p&gt;最近一直在思考web软件的升级的管理，之前都是单独写的，一个一个版本的升级，但是后来发现夸版本升级比较麻烦，随着版本的升级，代码越来越多，代码不能重用，一直想不到一个即简单代码又简洁的方法。&lt;/p&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;using System;&#xD;
using System.Web;&#xD;
&#xD;
namespace Caicai.Jingpin.UI.Update&#xD;
{&#xD;
    public class U_1_2 : System.Web.UI.Page&#xD;
    {&#xD;
        protected void Page_Load(object sender, EventArgs e)&#xD;
        {&#xD;
            string action = Request.QueryString["action"];&#xD;
            &#xD;
            if (action == "update")&#xD;
            {&#xD;
                this.Update();&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public void Update()&#xD;
        {&#xD;
            //升级文件程序&#xD;
            HttpContext.Current.Response.Write("V1.0升级到V2.0成功！");&#xD;
            HttpContext.Current.Response.Write("&amp;lt;br /&amp;gt;");&#xD;
        }&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;using System;&#xD;
using System.Web;&#xD;
&#xD;
namespace Caicai.Jingpin.UI.Update&#xD;
{&#xD;
    public class U_2_3 : System.Web.UI.Page&#xD;
    {&#xD;
        protected void Page_Load(object sender, EventArgs e)&#xD;
        {&#xD;
            string action = Request.QueryString["action"];&#xD;
            string version = Request.QueryString["version"];&#xD;
&#xD;
            if (version == "1")&#xD;
            {&#xD;
                new U_1_2().Update();&#xD;
            }&#xD;
&#xD;
            if (action == "update")&#xD;
            {&#xD;
                this.Update();&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public void Update()&#xD;
        {&#xD;
            //升级文件程序&#xD;
            HttpContext.Current.Response.Write("V2.0升级到V3.0成功！");&#xD;
            HttpContext.Current.Response.Write("&amp;lt;br /&amp;gt;");&#xD;
        }&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;using System;&#xD;
using System.Web;&#xD;
&#xD;
namespace Caicai.Jingpin.UI.Update&#xD;
{&#xD;
    public class U_3_4 : System.Web.UI.Page&#xD;
    {&#xD;
        protected void Page_Load(object sender, EventArgs e)&#xD;
        {&#xD;
            string action = Request.QueryString["action"];&#xD;
            string version = Request.QueryString["version"];&#xD;
&#xD;
            if (version == "1")&#xD;
            {&#xD;
                new U_1_2().Update();&#xD;
                new U_2_3().Update();&#xD;
            }&#xD;
&#xD;
            if (version == "2")&#xD;
            {&#xD;
                new U_2_3().Update();&#xD;
            }&#xD;
&#xD;
            if (action == "update")&#xD;
            {&#xD;
                this.Update();&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public void Update()&#xD;
        {&#xD;
            //升级文件程序&#xD;
            HttpContext.Current.Response.Write("V3.0升级到V4.0成功！");&#xD;
            HttpContext.Current.Response.Write("&amp;lt;br /&amp;gt;");&#xD;
        }&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;br /&gt;&lt;br /&gt;&#xD;
&lt;div &gt;&#xD;
&lt;pre &gt;using System;&#xD;
using System.Web;&#xD;
&#xD;
namespace Caicai.Jingpin.UI.Update&#xD;
{&#xD;
    public class U_4_5 : System.Web.UI.Page&#xD;
    {&#xD;
        protected void Page_Load(object sender, EventArgs e)&#xD;
        {&#xD;
            string action = Request.QueryString["action"];&#xD;
            string version = Request.QueryString["version"];&#xD;
&#xD;
            if (version == "1")&#xD;
            {&#xD;
                new U_1_2().Update();&#xD;
                new U_2_3().Update();&#xD;
                new U_3_4().Update();&#xD;
            }&#xD;
&#xD;
            if (version == "2")&#xD;
            {&#xD;
                new U_2_3().Update();&#xD;
                new U_3_4().Update();&#xD;
            }&#xD;
&#xD;
            if (version == "3")&#xD;
            {&#xD;
                new U_3_4().Update();&#xD;
            }&#xD;
&#xD;
            if (action == "update")&#xD;
            {&#xD;
                this.Update();&#xD;
            }&#xD;
        }&#xD;
&#xD;
        public void Update()&#xD;
        {&#xD;
            //升级文件程序&#xD;
            HttpContext.Current.Response.Write("V4.0升级到V5.0成功！");&#xD;
            HttpContext.Current.Response.Write("&amp;lt;br /&amp;gt;");&#xD;
        }&#xD;
    }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/caicaihui/aggbug/2044236.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/caicaihui/archive/2011/05/12/2044236.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/caicaihui/archive/2008/07/07/1237756.html</id><title type="text">【原创】推荐一个模板引擎 - templateengine</title><summary type="text">一直都在使用StringTemplate模板引擎，虽然使用方便，但是功能实在太弱太弱，准备放弃使用StringTemplate。刚好碰巧发现了另外一个开源的模板引擎，就是今天要介绍的TemplateEngine 2，功能非常强大。</summary><published>2008-07-07T13:31:00Z</published><updated>2008-07-07T13:31:00Z</updated><author><name>菜菜灰</name><uri>http://www.cnblogs.com/caicaihui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/caicaihui/archive/2008/07/07/1237756.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caicaihui/archive/2008/07/07/1237756.html"/></entry><entry><id>http://www.cnblogs.com/caicaihui/archive/2008/06/29/1232099.html</id><title type="text">【原创】页面级缓存简单使用教程</title><summary type="text">缓存是个好东西，用好了能有效的提高网站的访问速度，这里我只介绍我所知道的页面缓存技巧，高手们欢迎补充指点，代码很简单，所以我也没有多做说明。同时我也是顶着巨大压力第一次发到首页来，欢迎大家互相学习交流。</summary><published>2008-06-29T11:54:00Z</published><updated>2008-06-29T11:54:00Z</updated><author><name>菜菜灰</name><uri>http://www.cnblogs.com/caicaihui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/caicaihui/archive/2008/06/29/1232099.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caicaihui/archive/2008/06/29/1232099.html"/></entry><entry><id>http://www.cnblogs.com/caicaihui/archive/2008/03/06/Silverlight_Beta.html</id><title type="text">【体验】Silverlight 2.0 多图</title><summary type="text">一直很期待Silverlight给我们带来的惊喜，之前看了scottgu写的Silverlight2.0教程，一直手痒想试试，这不今天刚发布Silverlight 2.0 Beta 我也抢先试用一下。</summary><published>2008-03-06T09:11:00Z</published><updated>2008-03-06T09:11:00Z</updated><author><name>菜菜灰</name><uri>http://www.cnblogs.com/caicaihui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/caicaihui/archive/2008/03/06/Silverlight_Beta.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caicaihui/archive/2008/03/06/Silverlight_Beta.html"/></entry><entry><id>http://www.cnblogs.com/caicaihui/archive/2007/12/12/992476.html</id><title type="text">【原创】小型文件浏览器</title><summary type="text">我的代码都非常简单，使用了GetFiles和GetDirectories方法结合，前台使用Repeater控件布局，可以随意修改界面样式。</summary><published>2007-12-12T09:31:00Z</published><updated>2007-12-12T09:31:00Z</updated><author><name>菜菜灰</name><uri>http://www.cnblogs.com/caicaihui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/caicaihui/archive/2007/12/12/992476.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caicaihui/archive/2007/12/12/992476.html"/></entry><entry><id>http://www.cnblogs.com/caicaihui/archive/2007/12/06/984978.html</id><title type="text">【原创】DataView 使用技巧</title><summary type="text">DataView的使用技巧</summary><published>2007-12-06T03:34:00Z</published><updated>2007-12-06T03:34:00Z</updated><author><name>菜菜灰</name><uri>http://www.cnblogs.com/caicaihui/</uri></author><link rel="alternate" href="http://www.cnblogs.com/caicaihui/archive/2007/12/06/984978.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/caicaihui/archive/2007/12/06/984978.html"/></entry></feed>
