<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Luke的技术知识库</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/58480/rss</id><updated>2012-05-23T16:41:23Z</updated><author><name>零末</name><uri>http://www.cnblogs.com/Jane_Wang/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jane_Wang/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/58480/rss"/><entry><id>http://www.cnblogs.com/Jane_Wang/archive/2012/04/02/2429842.html</id><title type="text">IIS目录操作类</title><summary type="text">using System;using System.IO;using System.Text;using System.DirectoryServices;using System.Collections;namespace Mono.Web{ /// &lt;summary&gt; /// IIS 虚拟目录操作类 /// &lt;/summary&gt; /// &lt;remarks&gt; ///...</summary><published>2012-04-02T04:57:00Z</published><updated>2012-04-02T04:57:00Z</updated><author><name>零末</name><uri>http://www.cnblogs.com/Jane_Wang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jane_Wang/archive/2012/04/02/2429842.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jane_Wang/archive/2012/04/02/2429842.html"/><content type="html">&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br/&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;br/&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;br/&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.DirectoryServices;&lt;br/&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections;&lt;br/&gt;&lt;br/&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Mono.Web&lt;br/&gt;{&lt;br/&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;/// IIS 虚拟目录操作类&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;/// &amp;lt;remarks&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;/// &amp;lt;para&amp;gt;有关IIS的属性设置，请参考: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/bb9c0d25-d003-4ddd-8adb-8662de0a24ee.asp&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;/// &amp;lt;para&amp;gt;虚拟目录名区分大小写。&amp;lt;/para&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="rem"&gt;/// &amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; VirtualDirectory : IDisposable&lt;br/&gt;    {&lt;br/&gt;        DirectoryEntry rootEntry; &lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 构造方法&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; VirtualDirectory()&lt;br/&gt;        {&lt;br/&gt;            rootEntry = &lt;span class="kwrd"&gt;new&lt;/span&gt; DirectoryEntry(&lt;span class="str"&gt;&amp;quot;IIS://localhost/W3SVC/1/root&amp;quot;&lt;/span&gt;); &lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 构造方法&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;路径(如: IIS://server1/W3SVC/1/root)&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;username&amp;quot;&amp;gt;用户名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;password&amp;quot;&amp;gt;密码&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; VirtualDirectory(&lt;span class="kwrd"&gt;string&lt;/span&gt; path, &lt;span class="kwrd"&gt;string&lt;/span&gt; username, &lt;span class="kwrd"&gt;string&lt;/span&gt; password)&lt;br/&gt;        {&lt;br/&gt;            rootEntry = &lt;span class="kwrd"&gt;new&lt;/span&gt; DirectoryEntry(path, username, password); &lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 释放资源&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Dispose()&lt;br/&gt;        {&lt;br/&gt;            rootEntry.Close();&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 是否存在&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Exists(&lt;span class="kwrd"&gt;string&lt;/span&gt; name) &lt;br/&gt;        { &lt;br/&gt;            &lt;span class="kwrd"&gt;bool&lt;/span&gt; exited =&lt;span class="kwrd"&gt;false&lt;/span&gt;; &lt;br/&gt;            DirectoryEntries entries = rootEntry.Children; &lt;br/&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt;(DirectoryEntry entry &lt;span class="kwrd"&gt;in&lt;/span&gt; entries) &lt;br/&gt;            { &lt;br/&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt;(entry.Name == name) &lt;br/&gt;                    exited = &lt;span class="kwrd"&gt;true&lt;/span&gt;; &lt;br/&gt;            } &lt;br/&gt;&lt;br/&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; exited; &lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 创建&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;对应物理路径&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Create(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, &lt;span class="kwrd"&gt;string&lt;/span&gt; path) &lt;br/&gt;        { &lt;br/&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (Exists(name)) &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;            DirectoryEntry newVirDir = rootEntry.Children.Add(name, &lt;span class="str"&gt;&amp;quot;IIsWebVirtualDir&amp;quot;&lt;/span&gt;); &lt;br/&gt;            newVirDir.Invoke(&lt;span class="str"&gt;&amp;quot;AppCreate&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;true&lt;/span&gt;); &lt;br/&gt;            newVirDir.CommitChanges(); &lt;br/&gt;            rootEntry .CommitChanges(); &lt;br/&gt;&lt;br/&gt;            newVirDir.Properties[&lt;span class="str"&gt;&amp;quot;AnonymousPasswordSync&amp;quot;&lt;/span&gt;].Value = &lt;span class="kwrd"&gt;true&lt;/span&gt;; &lt;br/&gt;            newVirDir.Properties[&lt;span class="str"&gt;&amp;quot;Path&amp;quot;&lt;/span&gt;].Value= path; &lt;br/&gt;            newVirDir.CommitChanges(); &lt;br/&gt;&lt;br/&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 删除&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Delete(&lt;span class="kwrd"&gt;string&lt;/span&gt; name) &lt;br/&gt;        { &lt;br/&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!Exists(name)) &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;br/&gt;&lt;br/&gt;            rootEntry .Invoke(&lt;span class="str"&gt;&amp;quot;Delete&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;IIsVirtualDir&amp;quot;&lt;/span&gt;, name); &lt;br/&gt;            rootEntry .CommitChanges(); &lt;br/&gt;        } &lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 获取属性&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;example&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// VirtualDirectory vd = new VirtualDirectory();&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// DirectoryEntry entry = vd.GetProperties(&amp;quot;Temp1&amp;quot;);&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// foreach(string s in entry.Properties.PropertyNames)&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// {&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;///        Console.WriteLine(&amp;quot;{0}:{1} ({2})&amp;quot;, s, entry.Properties[s].Value, entry.Properties[s].Value.GetType());&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;///        foreach (object o in entry.Properties[s])&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;///        {&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;///            Console.WriteLine(&amp;quot;\t{0}&amp;quot;, o);&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;///        }&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// }&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/example&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; DirectoryEntry GetProperties(&lt;span class="kwrd"&gt;string&lt;/span&gt; name) &lt;br/&gt;        { &lt;br/&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (Exists(name)) &lt;br/&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; rootEntry.Children.Find(name, &lt;span class="str"&gt;&amp;quot;IIsWebVirtualDir&amp;quot;&lt;/span&gt;); &lt;br/&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br/&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br/&gt;        } &lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 获取属性&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;property&amp;quot;&amp;gt;属性名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; GetProperty(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, &lt;span class="kwrd"&gt;string&lt;/span&gt; property)&lt;br/&gt;        {&lt;br/&gt;            DirectoryEntry info = GetProperties(name);&lt;br/&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; info != &lt;span class="kwrd"&gt;null&lt;/span&gt; ? info.Properties[property].Value : &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 设置属性&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;property&amp;quot;&amp;gt;属性名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;value&amp;quot;&amp;gt;值&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetProperty(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, &lt;span class="kwrd"&gt;string&lt;/span&gt; property, &lt;span class="kwrd"&gt;object&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;)&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (Exists(name)) &lt;br/&gt;            { &lt;br/&gt;                DirectoryEntry entry = rootEntry.Children.Find(name,&lt;span class="str"&gt;&amp;quot;IIsWebVirtualDir&amp;quot;&lt;/span&gt;); &lt;br/&gt;                entry.Properties[property].Value = &lt;span class="kwrd"&gt;value&lt;/span&gt;;&lt;br/&gt;                entry.CommitChanges();&lt;br/&gt;            } &lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 设置默认文档&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;filename&amp;quot;&amp;gt;文件名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;example&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// VirtualDirectory vd = new VirtualDirectory();&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// vd.SetDefaultDoc(&amp;quot;test&amp;quot;, &amp;quot;default.aspx&amp;quot;, &amp;quot;index.aspx&amp;quot;);&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/example&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetDefaultDoc(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, &lt;span class="kwrd"&gt;params&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt;[] filename)&lt;br/&gt;        {&lt;br/&gt;            StringBuilder sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;br/&gt;&lt;br/&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i &amp;lt; filename.Length; i++)&lt;br/&gt;            {&lt;br/&gt;                sb.Append(filename[i]);&lt;br/&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (i &amp;lt; filename.Length - 1) sb.Append(&lt;span class="str"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;);&lt;br/&gt;            }&lt;br/&gt;&lt;br/&gt;            SetProperty(name, &lt;span class="str"&gt;&amp;quot;DefaultDoc&amp;quot;&lt;/span&gt;, sb.ToString());&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 添加应用程序映射&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;ext&amp;quot;&amp;gt;扩展名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;app&amp;quot;&amp;gt;应用程序路径&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;method&amp;quot;&amp;gt;动作(OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE  为空时表示全部动作。)&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;script&amp;quot;&amp;gt;脚本引擎&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;checkExists&amp;quot;&amp;gt;检查文件是否存在&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AddScriptMap(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, &lt;span class="kwrd"&gt;string&lt;/span&gt; ext, &lt;span class="kwrd"&gt;string&lt;/span&gt; app, &lt;span class="kwrd"&gt;string&lt;/span&gt; method, &lt;span class="kwrd"&gt;bool&lt;/span&gt; script, &lt;span class="kwrd"&gt;bool&lt;/span&gt; checkExists)&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!ext.StartsWith(&lt;span class="str"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;)) &lt;br/&gt;                ext = &lt;span class="str"&gt;&amp;quot;.&amp;quot;&lt;/span&gt; + ext;&lt;br/&gt;            ext = ext.ToLower();&lt;br/&gt;&lt;br/&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; id = 0;&lt;br/&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (script &amp;amp;&amp;amp; checkExists)&lt;br/&gt;                id = 5;&lt;br/&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (script)&lt;br/&gt;                id = 1;&lt;br/&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt; (checkExists)&lt;br/&gt;                id = 4;&lt;br/&gt;&lt;br/&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; map = &lt;br/&gt;                method != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; method.Trim().Length &amp;gt; 0 ?&lt;br/&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;&amp;quot;{0},{1},{2},{3}&amp;quot;&lt;/span&gt;, ext, app, id, method) : &lt;br/&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;&amp;quot;{0},{1},{2}&amp;quot;&lt;/span&gt;, ext, app, id);&lt;br/&gt;&lt;br/&gt;            ArrayList maps = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList((&lt;span class="kwrd"&gt;object&lt;/span&gt;[])GetProperty(name, &lt;span class="str"&gt;&amp;quot;ScriptMaps&amp;quot;&lt;/span&gt;));&lt;br/&gt;            &lt;br/&gt;            &lt;span class="rem"&gt;// Delete, if it's exists.&lt;/span&gt;&lt;br/&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; ext2 = ext + &lt;span class="str"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;;&lt;br/&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i  = 0; i &amp;lt; maps.Count; i++)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (((&lt;span class="kwrd"&gt;string&lt;/span&gt;)maps[i]).ToLower().StartsWith(ext))&lt;br/&gt;                {&lt;br/&gt;                    maps.RemoveAt(i);&lt;br/&gt;                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;br/&gt;                }&lt;br/&gt;            }&lt;br/&gt;&lt;br/&gt;            &lt;span class="rem"&gt;// Append&lt;/span&gt;&lt;br/&gt;            maps.Add(map);&lt;br/&gt;            SetProperty(name, &lt;span class="str"&gt;&amp;quot;ScriptMaps&amp;quot;&lt;/span&gt;, maps.ToArray(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;object&lt;/span&gt;)));&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 删除应用程序映射&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;ext&amp;quot;&amp;gt;扩展名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DeleteScriptMap(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, &lt;span class="kwrd"&gt;string&lt;/span&gt; ext)&lt;br/&gt;        {&lt;br/&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!ext.StartsWith(&lt;span class="str"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;)) &lt;br/&gt;                ext = &lt;span class="str"&gt;&amp;quot;.&amp;quot;&lt;/span&gt; + ext;&lt;br/&gt;            ext = ext.ToLower();&lt;br/&gt;&lt;br/&gt;            ArrayList maps = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList((&lt;span class="kwrd"&gt;object&lt;/span&gt;[])GetProperty(name, &lt;span class="str"&gt;&amp;quot;ScriptMaps&amp;quot;&lt;/span&gt;));&lt;br/&gt;            &lt;br/&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; ext2 = ext + &lt;span class="str"&gt;&amp;quot;,&amp;quot;&lt;/span&gt;;&lt;br/&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i  = 0; i &amp;lt; maps.Count; i++)&lt;br/&gt;            {&lt;br/&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (((&lt;span class="kwrd"&gt;string&lt;/span&gt;)maps[i]).ToLower().StartsWith(ext))&lt;br/&gt;                {&lt;br/&gt;                    maps.RemoveAt(i);&lt;br/&gt;                    &lt;br/&gt;                    SetProperty(name, &lt;span class="str"&gt;&amp;quot;ScriptMaps&amp;quot;&lt;/span&gt;, maps.ToArray(&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(&lt;span class="kwrd"&gt;object&lt;/span&gt;)));&lt;br/&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;br/&gt;                }&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 允许写入&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; EnabledAccessWrite(&lt;span class="kwrd"&gt;string&lt;/span&gt; name)&lt;br/&gt;        {&lt;br/&gt;            SetProperty(name, &lt;span class="str"&gt;&amp;quot;AccessFlags&amp;quot;&lt;/span&gt;, (&lt;span class="kwrd"&gt;int&lt;/span&gt;)GetProperty(name, &lt;span class="str"&gt;&amp;quot;AccessFlags&amp;quot;&lt;/span&gt;) | 0x00000002);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 允许目录浏览&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; EnabledDirBrowse(&lt;span class="kwrd"&gt;string&lt;/span&gt; name)&lt;br/&gt;        {&lt;br/&gt;            SetProperty(name, &lt;span class="str"&gt;&amp;quot;DirBrowseFlags&amp;quot;&lt;/span&gt;, (&lt;span class="kwrd"&gt;int&lt;/span&gt;)GetProperty(name, &lt;span class="str"&gt;&amp;quot;DirBrowseFlags&amp;quot;&lt;/span&gt;) | 0x80000000);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 设置路径&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;物理路径&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetPath(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, &lt;span class="kwrd"&gt;string&lt;/span&gt; path)&lt;br/&gt;        {&lt;br/&gt;            SetProperty(name, &lt;span class="str"&gt;&amp;quot;Path&amp;quot;&lt;/span&gt;, path);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 设置会话超时&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;超时时间(分钟)&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetSessionTimeout(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, &lt;span class="kwrd"&gt;int&lt;/span&gt; timeout)&lt;br/&gt;        {&lt;br/&gt;            SetProperty(name, &lt;span class="str"&gt;&amp;quot;AspSessionTimeout&amp;quot;&lt;/span&gt;, timeout);&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// 设置脚本超时&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;name&amp;quot;&amp;gt;虚拟目录名&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;path&amp;quot;&amp;gt;超时时间(秒)&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br/&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SetScriptTimeout(&lt;span class="kwrd"&gt;string&lt;/span&gt; name, &lt;span class="kwrd"&gt;int&lt;/span&gt; timeout)&lt;br/&gt;        {&lt;br/&gt;            SetProperty(name, &lt;span class="str"&gt;&amp;quot;AspScriptTimeout&amp;quot;&lt;/span&gt;, timeout);&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://www.cnblogs.com/Jane_Wang/aggbug/2429842.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jane_Wang/archive/2012/04/02/2429842.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jane_Wang/archive/2011/05/09/2041051.html</id><title type="text">分享SharpDevelop Asp.net DevServer插件</title><summary type="text">SharpDevelop是个不错的C#开源软件，但是有个问题，asp.net程序开发时运行和调试是个问题，老是要挂到iis上。索性把vs的DevServer移了过来。用插件的方式，增加了Debug in Browser和View in browser右键菜单，直接运行，方便许多。 For SharpDevelop 3.2 http://files.cnblogs.com/heros/SharpDe...</summary><published>2011-05-09T04:50:00Z</published><updated>2011-05-09T04:50:00Z</updated><author><name>零末</name><uri>http://www.cnblogs.com/Jane_Wang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jane_Wang/archive/2011/05/09/2041051.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jane_Wang/archive/2011/05/09/2041051.html"/><content type="html">&lt;p&gt;SharpDevelop是个不错的C#开源软件，但是有个问题，asp.net程序开发时运行和调试是个问题，老是要挂到iis上。索性把vs的DevServer移了过来。用插件的方式，增加了Debug in Browser和View in browser右键菜单，直接运行，方便许多。&lt;/p&gt;  &lt;p&gt;For SharpDevelop 3.2&lt;/p&gt;  &lt;p&gt;&lt;a href="http://files.cnblogs.com/heros/SharpDevelopWebRunnerAddIn.rar"&gt;http://files.cnblogs.com/heros/SharpDevelopWebRunnerAddIn.rar&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For SharpDevelop 4.0&lt;/p&gt;  &lt;p&gt;&lt;a href="http://files.cnblogs.com/heros/WebRunner4.rar"&gt;http://files.cnblogs.com/heros/WebRunner4.rar&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;img height="302" alt="" src="http://pic002.cnblogs.com/images/2010/29064/2010101123521355.jpg" width="536" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jane_Wang/aggbug/2041051.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jane_Wang/archive/2011/05/09/2041051.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jane_Wang/archive/2010/11/26/1889257.html</id><title type="text">刚见的几个中级程序员考试的算法题</title><summary type="text">函数vr6174是对卡布列克运算的验证程序。函数采用了递归法，并调用parse_sort和max_min函数。其中parse_sort函数把所给的四位数分解为4个一位数，并将其从小到大排序，放入数组each；max_min函数根据each的值形成所要求的最大四位数和最小四位数。 [程序] 本程序将自然数1，2，…，N2按蛇形方式逐个顺序存入N阶距阵。例如，当N=3和4时分别如图1和图2。&amp;#16...</summary><published>2010-11-26T13:53:00Z</published><updated>2010-11-26T13:53:00Z</updated><author><name>零末</name><uri>http://www.cnblogs.com/Jane_Wang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jane_Wang/archive/2010/11/26/1889257.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jane_Wang/archive/2010/11/26/1889257.html"/><content type="html">&lt;p&gt;函数vr6174是对卡布列克运算的验证程序。函数采用了递归法，并调用parse_sort和max_min函数。其中parse_sort函数把所给的四位数分解为4个一位数，并将其从小到大排序，放入数组each；max_min函数根据each的值形成所要求的最大四位数和最小四位数。&lt;/p&gt;  &lt;p&gt;[程序]&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;span class="lnum"&gt;   1:  &lt;/span&gt;  vr6174(&lt;span class="kwrd"&gt;int&lt;/span&gt;  num)  &lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;   3:  &lt;/span&gt;  {  &lt;span class="kwrd"&gt;int&lt;/span&gt; each[4],max,min;  &lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt;(num!=6174&amp;amp;&amp;amp;num)  &lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;   7:  &lt;/span&gt;{    parse_sort(num, each);  &lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;   9:  &lt;/span&gt;     max_min(each,&amp;amp;max,&amp;amp;min);  &lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  11:  &lt;/span&gt;     num=max_min;  &lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  13:  &lt;/span&gt;     printf(“%d-%d=%d”, max, min, num);  &lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  15:  &lt;/span&gt;     vr6174(num);  &lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  17:  &lt;/span&gt;}  &lt;span class="lnum"&gt;  18:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="kwrd"&gt;else&lt;/span&gt;  printf(“.\n”);  &lt;span class="lnum"&gt;  20:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  21:  &lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; ;  &lt;span class="lnum"&gt;  22:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  23:  &lt;/span&gt;}  &lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  25:  &lt;/span&gt;  parse_sort(&lt;span class="kwrd"&gt;int&lt;/span&gt;  num,  &lt;span class="kwrd"&gt;int&lt;/span&gt;  *each)  &lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  27:  &lt;/span&gt;  {    &lt;span class="kwrd"&gt;int&lt;/span&gt; i,*j,*k, temp;  &lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  29:  &lt;/span&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt;(i=0;i&amp;lt;4;i++)  &lt;span class="lnum"&gt;  30:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  31:  &lt;/span&gt;{   j=each+3-i;  &lt;span class="lnum"&gt;  32:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  33:  &lt;/span&gt;*j=num%10 ;  &lt;span class="lnum"&gt;  34:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  35:  &lt;/span&gt;num=num/10;  &lt;span class="lnum"&gt;  36:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  37:  &lt;/span&gt;}  &lt;span class="lnum"&gt;  38:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  39:  &lt;/span&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt;(i=0;i&amp;lt;3;i++)  &lt;span class="lnum"&gt;  40:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  41:  &lt;/span&gt;   &lt;span class="kwrd"&gt;for&lt;/span&gt;(j=each,k=each+1; j&amp;lt;each+3-i; j++,k++ )  &lt;span class="lnum"&gt;  42:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  43:  &lt;/span&gt;    {   &lt;span class="kwrd"&gt;if&lt;/span&gt;(*j&amp;gt;*k){temp=*j; *j=*k; *k=temp;  }  &lt;span class="lnum"&gt;  44:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  45:  &lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt;;  &lt;span class="lnum"&gt;  46:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  47:  &lt;/span&gt;  }  &lt;span class="lnum"&gt;  48:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  49:  &lt;/span&gt;  max_min(&lt;span class="kwrd"&gt;int&lt;/span&gt; *each, &lt;span class="kwrd"&gt;int&lt;/span&gt; *max, &lt;span class="kwrd"&gt;int&lt;/span&gt; *min)  &lt;span class="lnum"&gt;  50:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  51:  &lt;/span&gt;  {    &lt;span class="kwrd"&gt;int&lt;/span&gt; *j;  &lt;span class="lnum"&gt;  52:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  53:  &lt;/span&gt;*min=0;  &lt;span class="lnum"&gt;  54:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  55:  &lt;/span&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt;(i=each; i&amp;lt;each+4; i++)  &lt;span class="lnum"&gt;  56:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  57:  &lt;/span&gt;    *min= *min*10+*i ;  &lt;span class="lnum"&gt;  58:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  59:  &lt;/span&gt;*max=0;  &lt;span class="lnum"&gt;  60:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  61:  &lt;/span&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt;(i=each+3; i&amp;gt;=each; i--)  &lt;span class="lnum"&gt;  62:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  63:  &lt;/span&gt;    *max=  *max*10+*i ;  &lt;span class="lnum"&gt;  64:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  65:  &lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt;;  &lt;span class="lnum"&gt;  66:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  67:  &lt;/span&gt;  }&lt;/div&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jane_Wang/WindowsLiveWriter/ea69eed5ac4d_133B9/wps_clip_image-30569_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wps_clip_image-30569" border="0" alt="wps_clip_image-30569" src="http://images.cnblogs.com/cnblogs_com/Jane_Wang/WindowsLiveWriter/ea69eed5ac4d_133B9/wps_clip_image-30569_thumb.png" width="90" height="99" /&gt;&lt;/a&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jane_Wang/WindowsLiveWriter/ea69eed5ac4d_133B9/wps_clip_image-5430_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="wps_clip_image-5430" border="0" alt="wps_clip_image-5430" src="http://images.cnblogs.com/cnblogs_com/Jane_Wang/WindowsLiveWriter/ea69eed5ac4d_133B9/wps_clip_image-5430_thumb.png" width="138" height="120" /&gt;&lt;/a&gt;本程序将自然数1，2，…，N2按蛇形方式逐个顺序存入N阶距阵。例如，当N=3和4时分别如图1和图2。&lt;/p&gt;&lt;p&gt;&amp;#160; 从an0开始到a0n为止（n=N-1）顺序填入自然数，交替地对每一斜列从左上元素向右下元素或从右下元素到左上元素存数。&lt;/p&gt;&lt;div class="csharpcode"&gt;  &lt;span class="lnum"&gt;   1:  &lt;/span&gt;#include&amp;lt;stdio.h&amp;gt;  &lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="preproc"&gt;#define&lt;/span&gt;  SIZE  10  &lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; a[SIZE][SIZE],k;  &lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; main()  &lt;span class="lnum"&gt;   5:  &lt;/span&gt;{     &lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; i,j,n,N;  &lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;void&lt;/span&gt; makeArray(&lt;span class="kwrd"&gt;int&lt;/span&gt;);  &lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;void&lt;/span&gt; makeline(&lt;span class="kwrd"&gt;int&lt;/span&gt;,&lt;span class="kwrd"&gt;int&lt;/span&gt;,&lt;span class="kwrd"&gt;int&lt;/span&gt;);  &lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt;(N=3;N&amp;lt;=SIZE;N++)  &lt;span class="lnum"&gt;  11:  &lt;/span&gt;    {     &lt;span class="lnum"&gt;  12:  &lt;/span&gt;        k=1;  &lt;span class="lnum"&gt;  13:  &lt;/span&gt;        makeArray(n=N-1);  &lt;span class="lnum"&gt;  14:  &lt;/span&gt;        printf(&lt;span class="str"&gt;&amp;quot;\nN=%d;\n&amp;quot;&lt;/span&gt;,n+1);  &lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt;(i=0;i&amp;lt;=n;i++)  &lt;span class="lnum"&gt;  16:  &lt;/span&gt;        {     &lt;span class="lnum"&gt;  17:  &lt;/span&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt;(j=0;j&amp;lt;=n;j++)printf(&lt;span class="str"&gt;&amp;quot;%4d&amp;quot;&lt;/span&gt;,a[i][j]);  &lt;span class="lnum"&gt;  18:  &lt;/span&gt;            printf(&lt;span class="str"&gt;&amp;quot;\n&amp;quot;&lt;/span&gt;);  &lt;span class="lnum"&gt;  19:  &lt;/span&gt;        }  &lt;span class="lnum"&gt;  20:  &lt;/span&gt;    }  &lt;span class="lnum"&gt;  21:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; 0;  &lt;span class="lnum"&gt;  22:  &lt;/span&gt;}  &lt;span class="lnum"&gt;  23:  &lt;/span&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; makeline(&lt;span class="kwrd"&gt;int&lt;/span&gt; rowstart,&lt;span class="kwrd"&gt;int&lt;/span&gt; colstart,&lt;span class="kwrd"&gt;int&lt;/span&gt; rowend)  &lt;span class="rem"&gt;/*完成距阵一条斜线的整数的填写*/&lt;/span&gt;  &lt;span class="lnum"&gt;  24:  &lt;/span&gt;{      &lt;span class="lnum"&gt;  25:  &lt;/span&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; i,j,sign=((rowend-rowstart)&amp;gt;0?1:0)*2-1;  &lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;#160;  &lt;span class="lnum"&gt;  27:  &lt;/span&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt;(i=rowstart,j=colstart;(rowend-i)*sign&amp;gt;=0;i+=sign,j+=sign)  &lt;span class="lnum"&gt;  28:  &lt;/span&gt;        a[i][j]=k++;  &lt;span class="lnum"&gt;  29:  &lt;/span&gt;}  &lt;span class="lnum"&gt;  30:  &lt;/span&gt;&lt;span class="kwrd"&gt;void&lt;/span&gt; makeArray(&lt;span class="kwrd"&gt;int&lt;/span&gt; n)  &lt;span class="rem"&gt;/*完成距阵每条斜线的整数的填写*/&lt;/span&gt;  &lt;span class="lnum"&gt;  31:  &lt;/span&gt;{     &lt;span class="lnum"&gt;  32:  &lt;/span&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; d;  &lt;span class="lnum"&gt;  33:  &lt;/span&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt;(d=1;d&amp;lt;=n*2+1;d++)  &lt;span class="lnum"&gt;  34:  &lt;/span&gt;    {  &lt;span class="lnum"&gt;  35:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt;(d&amp;lt;=n)  &lt;span class="lnum"&gt;  36:  &lt;/span&gt;        {  &lt;span class="lnum"&gt;  37:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(d%2)   &lt;span class="lnum"&gt;  38:  &lt;/span&gt;            {  &lt;span class="lnum"&gt;  39:  &lt;/span&gt;                makeline(n,d-1,n-d+1);   &lt;span class="lnum"&gt;  40:  &lt;/span&gt;            }  &lt;span class="lnum"&gt;  41:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;   &lt;span class="lnum"&gt;  42:  &lt;/span&gt;            {  &lt;span class="lnum"&gt;  43:  &lt;/span&gt;                makeline(n-d+1,0,n);  &lt;span class="lnum"&gt;  44:  &lt;/span&gt;            }  &lt;span class="lnum"&gt;  45:  &lt;/span&gt;        }  &lt;span class="lnum"&gt;  46:  &lt;/span&gt;         &lt;span class="kwrd"&gt;else&lt;/span&gt;  &lt;span class="lnum"&gt;  47:  &lt;/span&gt;         {  &lt;span class="lnum"&gt;  48:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(d%2)   &lt;span class="lnum"&gt;  49:  &lt;/span&gt;            {  &lt;span class="lnum"&gt;  50:  &lt;/span&gt;                makeline(2*n-d+1,n,0);   &lt;span class="lnum"&gt;  51:  &lt;/span&gt;            }  &lt;span class="lnum"&gt;  52:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;   &lt;span class="lnum"&gt;  53:  &lt;/span&gt;            {  &lt;span class="lnum"&gt;  54:  &lt;/span&gt;                makeline(0,d-n-1,2*n-d+1);  &lt;span class="lnum"&gt;  55:  &lt;/span&gt;            }  &lt;span class="lnum"&gt;  56:  &lt;/span&gt;        }  &lt;span class="lnum"&gt;  57:  &lt;/span&gt;    }  &lt;span class="lnum"&gt;  58:  &lt;/span&gt;}&lt;/div&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;这个纠结的蛇形图，花了我好几个小时菜搞定的。。必须得记录下来，以免丢啦。。。&lt;img src="http://www.cnblogs.com/Jane_Wang/aggbug/1889257.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jane_Wang/archive/2010/11/26/1889257.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jane_Wang/archive/2010/08/12/1797899.html</id><title type="text">用CodeSmith写的两个模板（Model、DAL）</title><summary type="text">最近对代码生成比较感兴趣，以前也常常使用动软代码生成器生成简单三层架构的代码。但是总感觉动软生成的代码有欠缺，有的时候还是要自己手动修改代码来满足自己的需求。最近发现CodeSmith感觉挺好用的，自己就模仿动软的形式写了两个模板，调用的也是动软的类库。 Model.cst DAL.cst第一次写这样的模板，有些许欠缺请大家指点。前段时间看到有人在园子里写微软的代码生成CodeDom，这段时间也看...</summary><published>2010-08-12T02:43:00Z</published><updated>2010-08-12T02:43:00Z</updated><author><name>零末</name><uri>http://www.cnblogs.com/Jane_Wang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jane_Wang/archive/2010/08/12/1797899.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jane_Wang/archive/2010/08/12/1797899.html"/><content type="html">&lt;p&gt;最近对代码生成比较感兴趣，以前也常常使用动软代码生成器生成简单三层架构的代码。但是总感觉动软生成的代码有欠缺，有的时候还是要自己手动修改代码来满足自己的需求。最近发现CodeSmith感觉挺好用的，自己就模仿动软的形式写了两个模板，调用的也是动软的类库。&lt;/p&gt; &lt;p&gt;Model.cst&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;lt;%-- &lt;span class="lnum"&gt;   2:  &lt;/span&gt;Name:Model Layout&lt;span class="lnum"&gt;   3:  &lt;/span&gt;Author: monolight&lt;span class="lnum"&gt;   4:  &lt;/span&gt;Description: &lt;span class="lnum"&gt;   5:  &lt;/span&gt;--%&amp;gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;lt;%@ CodeTemplate Language=&lt;span class="str"&gt;"C#"&lt;/span&gt; TargetLanguage=&lt;span class="str"&gt;"C#"&lt;/span&gt; Src=&lt;span class="str"&gt;""&lt;/span&gt; Inherits=&lt;span class="str"&gt;""&lt;/span&gt; Debug=&lt;span class="str"&gt;"False"&lt;/span&gt; CompilerVersion=&lt;span class="str"&gt;"v3.5"&lt;/span&gt; Description=&lt;span class="str"&gt;"Template description here."&lt;/span&gt; %&amp;gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;lt;%@ Assembly Name=&lt;span class="str"&gt;"SchemaExplorer"&lt;/span&gt; %&amp;gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;lt;%@ Import Namespace=&lt;span class="str"&gt;"SchemaExplorer"&lt;/span&gt; %&amp;gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;lt;%@ Property Name=&lt;span class="str"&gt;"SourceTable"&lt;/span&gt; Type=&lt;span class="str"&gt;"SchemaExplorer.TableSchema"&lt;/span&gt; Optional=&lt;span class="str"&gt;"False"&lt;/span&gt; Category=&lt;span class="str"&gt;"Context"&lt;/span&gt; Description=&lt;span class="str"&gt;"??????????"&lt;/span&gt; %&amp;gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;lt;%@ Property Name=&lt;span class="str"&gt;"NameSpace"&lt;/span&gt; Type=&lt;span class="str"&gt;"String"&lt;/span&gt;  Optional=&lt;span class="str"&gt;"False"&lt;/span&gt; Description=&lt;span class="str"&gt;"????"&lt;/span&gt;  %&amp;gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;lt;%@ Map Name=&lt;span class="str"&gt;"CSharpAlias"&lt;/span&gt; Src=&lt;span class="str"&gt;"System-CSharpAlias"&lt;/span&gt; Description=&lt;span class="str"&gt;"System to C# Type Map"&lt;/span&gt; %&amp;gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;nbsp;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;nbsp;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; &amp;lt;%=NameSpace  %&amp;gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;{&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; &amp;lt;%= SourceTable.FullName %&amp;gt; &lt;span class="lnum"&gt;  20:  &lt;/span&gt;    {&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="preproc"&gt;#region&lt;/span&gt; Model&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &amp;lt;% &lt;span class="kwrd"&gt;for&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0; i&amp;lt;SourceTable.Columns.Count;i++){%&amp;gt; &lt;span class="lnum"&gt;  23:  &lt;/span&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &amp;lt;%=  CSharpAlias[SourceTable.Columns[i].SystemType.FullName]%&amp;gt; &amp;lt;%= SourceTable.Columns[i].Name %&amp;gt; {get;set;}&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        &amp;lt;%} %&amp;gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="preproc"&gt;#endregion&lt;/span&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    }&lt;span class="lnum"&gt;  27:  &lt;/span&gt;}&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;p&gt;DAL.cst&lt;/p&gt;&lt;div class="csharpcode"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;lt;%-- &lt;span class="lnum"&gt;   2:  &lt;/span&gt;Name:DAL Layout&lt;span class="lnum"&gt;   3:  &lt;/span&gt;Author: monolight&lt;span class="lnum"&gt;   4:  &lt;/span&gt;Description: &lt;span class="lnum"&gt;   5:  &lt;/span&gt;--%&amp;gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;lt;%@ CodeTemplate Language=&lt;span class="str"&gt;"C#"&lt;/span&gt; TargetLanguage=&lt;span class="str"&gt;"C#"&lt;/span&gt; Src=&lt;span class="str"&gt;""&lt;/span&gt; Inherits=&lt;span class="str"&gt;""&lt;/span&gt; Debug=&lt;span class="str"&gt;"False"&lt;/span&gt; CompilerVersion=&lt;span class="str"&gt;"v3.5"&lt;/span&gt; Description=&lt;span class="str"&gt;"Template description here."&lt;/span&gt; %&amp;gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;lt;%@ Assembly Name=&lt;span class="str"&gt;"SchemaExplorer"&lt;/span&gt; %&amp;gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;lt;%@ Import Namespace=&lt;span class="str"&gt;"SchemaExplorer"&lt;/span&gt; %&amp;gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;lt;%@ Property Name=&lt;span class="str"&gt;"SourceTable"&lt;/span&gt; Type=&lt;span class="str"&gt;"SchemaExplorer.TableSchema"&lt;/span&gt; Optional=&lt;span class="str"&gt;"False"&lt;/span&gt; Category=&lt;span class="str"&gt;"Context"&lt;/span&gt; Description=&lt;span class="str"&gt;"??????????"&lt;/span&gt; %&amp;gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;lt;%@ Property Name=&lt;span class="str"&gt;"UsingName"&lt;/span&gt; Type=&lt;span class="str"&gt;"String"&lt;/span&gt;  Optional=&lt;span class="str"&gt;"False"&lt;/span&gt;  Description=&lt;span class="str"&gt;"Import HelperSql Namespace"&lt;/span&gt;  %&amp;gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;lt;%@ Property Name=&lt;span class="str"&gt;"ModelUsingName"&lt;/span&gt; Type=&lt;span class="str"&gt;"String"&lt;/span&gt; Default=&lt;span class="str"&gt;""&lt;/span&gt; Optional=&lt;span class="str"&gt;"False"&lt;/span&gt;  Description=&lt;span class="str"&gt;"Model Namespace"&lt;/span&gt; OnChanged=&lt;span class="str"&gt;""&lt;/span&gt; Editor=&lt;span class="str"&gt;""&lt;/span&gt; EditorBase=&lt;span class="str"&gt;""&lt;/span&gt; Serializer=&lt;span class="str"&gt;""&lt;/span&gt; %&amp;gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;lt;%@ Property Name=&lt;span class="str"&gt;"NameSpace"&lt;/span&gt; Type=&lt;span class="str"&gt;"String"&lt;/span&gt;  Optional=&lt;span class="str"&gt;"False"&lt;/span&gt; Description=&lt;span class="str"&gt;"Application Namespace"&lt;/span&gt;  %&amp;gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;lt;%@ Map Name=&lt;span class="str"&gt;"CSharpAlias"&lt;/span&gt; Src=&lt;span class="str"&gt;"System-CSharpAlias"&lt;/span&gt; Description=&lt;span class="str"&gt;"System to C# Type Map"&lt;/span&gt; %&amp;gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;nbsp;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data.SqlClient;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; &amp;lt;%= UsingName %&amp;gt;;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; &amp;lt;%=NameSpace  %&amp;gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;{&lt;span class="lnum"&gt;  23:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; &amp;lt;%= SourceTable.FullName %&amp;gt; &lt;span class="lnum"&gt;  24:  &lt;/span&gt;    {&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="rem"&gt;//#region DAL Member Method&lt;/span&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        &lt;span class="rem"&gt;/// add data&lt;/span&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Add(&amp;lt;%= ModelUsingName %&amp;gt;.&amp;lt;%= SourceTable.FullName %&amp;gt;  model)&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        {&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            StringBuilder sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;span class="lnum"&gt;  33:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;"insert into &amp;lt;%= SourceTable.FullName %&amp;gt;("&lt;/span&gt;);&lt;span class="lnum"&gt;  34:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;"&amp;lt;% for(int i =0;i&amp;lt;SourceTable.NonPrimaryKeyColumns.Count;i++) {%&amp;gt; &lt;span class="lnum"&gt;  35:  &lt;/span&gt;                &amp;lt;%= SourceTable.NonPrimaryKeyColumns[i].Name %&amp;gt;&amp;lt;% if (i &amp;lt; SourceTable.NonPrimaryKeyColumns.Count - 1) { %&amp;gt;,&amp;lt;% } %&amp;gt;&amp;lt;%}%&amp;gt;"&lt;/span&gt;);&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;") values ("&lt;/span&gt;);&lt;span class="lnum"&gt;  37:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;"&amp;lt;% for(int i =0;i&amp;lt;SourceTable.NonPrimaryKeyColumns.Count;i++) {%&amp;gt; &lt;span class="lnum"&gt;  38:  &lt;/span&gt;                @&amp;lt;%= SourceTable.NonPrimaryKeyColumns[i].Name %&amp;gt;&amp;lt;% if (i &amp;lt; SourceTable.NonPrimaryKeyColumns.Count - 1) { %&amp;gt;,&amp;lt;% } %&amp;gt;&amp;lt;%}%&amp;gt;"&lt;/span&gt;);&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;")"&lt;/span&gt;);    &lt;span class="lnum"&gt;  40:  &lt;/span&gt;            SqlParameter[] parameters={&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                &amp;lt;% &lt;span class="kwrd"&gt;for&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i =0;i&amp;lt;SourceTable.NonPrimaryKeyColumns.Count;i++) {%&amp;gt; &lt;span class="lnum"&gt;  42:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlParameter(&lt;span class="str"&gt;"@&amp;lt;%= SourceTable.NonPrimaryKeyColumns[i].Name %&amp;gt;"&lt;/span&gt;,SqlDbType.&amp;lt;%= SourceTable.Columns[i].NativeType %&amp;gt;)&amp;lt;% &lt;span class="kwrd"&gt;if&lt;/span&gt; (i &amp;lt; SourceTable.NonPrimaryKeyColumns.Count - 1) { %&amp;gt;,&amp;lt;% } %&amp;gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                &amp;lt;%}%&amp;gt;                &lt;span class="lnum"&gt;  44:  &lt;/span&gt;                };&lt;span class="lnum"&gt;  45:  &lt;/span&gt;                &amp;lt;% &lt;span class="kwrd"&gt;for&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i =0;i&amp;lt;SourceTable.NonPrimaryKeyColumns.Count;i++) {%&amp;gt; &lt;span class="lnum"&gt;  46:  &lt;/span&gt;                parameters[&amp;lt;%= i %&amp;gt;]=model.&amp;lt;%= SourceTable.NonPrimaryKeyColumns[i].Name %&amp;gt;;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;                &amp;lt;%}%&amp;gt; &lt;span class="lnum"&gt;  48:  &lt;/span&gt;            DbHelperSQL.ExecuteSql(sb.ToString(),parameters);&lt;span class="lnum"&gt;  49:  &lt;/span&gt;        }&lt;span class="lnum"&gt;  50:  &lt;/span&gt;        &lt;span class="lnum"&gt;  51:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;        &lt;span class="rem"&gt;/// update data&lt;/span&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Update(&amp;lt;%= ModelUsingName %&amp;gt;.&amp;lt;%= SourceTable.FullName %&amp;gt;  model)&lt;span class="lnum"&gt;  55:  &lt;/span&gt;        {&lt;span class="lnum"&gt;  56:  &lt;/span&gt;            &lt;span class="lnum"&gt;  57:  &lt;/span&gt;            StringBuilder sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;span class="lnum"&gt;  58:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;"update &amp;lt;%= SourceTable.FullName %&amp;gt; set"&lt;/span&gt;);&lt;span class="lnum"&gt;  59:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;"&amp;lt;% for(int i =0;i&amp;lt;SourceTable.NonPrimaryKeyColumns.Count;i++) {%&amp;gt; &lt;span class="lnum"&gt;  60:  &lt;/span&gt;                &amp;lt;%= SourceTable.NonPrimaryKeyColumns[i].Name %&amp;gt;=@&amp;lt;%= SourceTable.NonPrimaryKeyColumns[i].Name %&amp;gt;&amp;lt;% if (i &amp;lt; SourceTable.NonPrimaryKeyColumns.Count - 1) { %&amp;gt;,&amp;lt;% } %&amp;gt;&amp;lt;%}%&amp;gt;"&lt;/span&gt;);&lt;span class="lnum"&gt;  61:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;" where &amp;lt;%= SourceTable.PrimaryKey.MemberColumns[0].Name %&amp;gt;=@&amp;lt;%=SourceTable.PrimaryKey.MemberColumns[0].Name  %&amp;gt;"&lt;/span&gt;)   &lt;span class="lnum"&gt;  62:  &lt;/span&gt;            SqlParameter[] parameters={&lt;span class="lnum"&gt;  63:  &lt;/span&gt;                &amp;lt;% &lt;span class="kwrd"&gt;for&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i =0;i&amp;lt;SourceTable.NonPrimaryKeyColumns.Count;i++) {%&amp;gt; &lt;span class="lnum"&gt;  64:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlParameter(&lt;span class="str"&gt;"@&amp;lt;%= SourceTable.NonPrimaryKeyColumns[i].Name %&amp;gt;"&lt;/span&gt;,SqlDbType.&amp;lt;%= SourceTable.Columns[i].NativeType %&amp;gt;)&amp;lt;% &lt;span class="kwrd"&gt;if&lt;/span&gt; (i &amp;lt; SourceTable.NonPrimaryKeyColumns.Count - 1) { %&amp;gt;,&amp;lt;% } %&amp;gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;                &amp;lt;%}%&amp;gt; &lt;span class="lnum"&gt;  66:  &lt;/span&gt;                ,&lt;span class="kwrd"&gt;new&lt;/span&gt; SqlParameter(&lt;span class="str"&gt;"@&amp;lt;%= SourceTable.PrimaryKey.MemberColumns[0].Name %&amp;gt;"&lt;/span&gt;,SqlDbType.&amp;lt;%= SourceTable.PrimaryKey.MemberColumns[0].NativeType %&amp;gt;)&lt;span class="lnum"&gt;  67:  &lt;/span&gt;                };&lt;span class="lnum"&gt;  68:  &lt;/span&gt;                &amp;lt;% &lt;span class="kwrd"&gt;for&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i =0;i&amp;lt;SourceTable.NonPrimaryKeyColumns.Count;i++) {%&amp;gt; &lt;span class="lnum"&gt;  69:  &lt;/span&gt;                parameters[&amp;lt;%= i %&amp;gt;]=model.&amp;lt;%= SourceTable.NonPrimaryKeyColumns[i].Name %&amp;gt;;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;                &amp;lt;%}%&amp;gt; &lt;span class="lnum"&gt;  71:  &lt;/span&gt;                parameters[&amp;lt;%= SourceTable.NonPrimaryKeyColumns.Count %&amp;gt;]=model.&amp;lt;%= SourceTable.PrimaryKey.MemberColumns[0].Name %&amp;gt;;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;            DbHelperSQL.ExecuteSql(sb.ToString(),parameters);&lt;span class="lnum"&gt;  73:  &lt;/span&gt;        }&lt;span class="lnum"&gt;  74:  &lt;/span&gt;        &lt;span class="lnum"&gt;  75:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Delete data&lt;/span&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Delete(&amp;lt;%=CSharpAlias[ SourceTable.PrimaryKey.MemberColumns[0].SystemType.FullName]%&amp;gt; &amp;lt;%= SourceTable.PrimaryKey.MemberColumns[0].Name%&amp;gt;)&lt;span class="lnum"&gt;  79:  &lt;/span&gt;        {&lt;span class="lnum"&gt;  80:  &lt;/span&gt;            StringBuilder sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;span class="lnum"&gt;  81:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;"delete &amp;lt;%= SourceTable.FullName %&amp;gt; "&lt;/span&gt;);&lt;span class="lnum"&gt;  82:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;" where &amp;lt;%= SourceTable.PrimaryKey.MemberColumns[0].Name%&amp;gt;=@&amp;lt;%= SourceTable.PrimaryKey.MemberColumns[0].Name%&amp;gt;"&lt;/span&gt;);&lt;span class="lnum"&gt;  83:  &lt;/span&gt;            SqlParameter[] parameters = {&lt;span class="lnum"&gt;  84:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlParameter(&lt;span class="str"&gt;"@&amp;lt;%= SourceTable.PrimaryKey.MemberColumns[0].Name %&amp;gt;"&lt;/span&gt;, SqlDbType.&amp;lt;%= SourceTable.PrimaryKey.MemberColumns[0].NativeType %&amp;gt;)&lt;span class="lnum"&gt;  85:  &lt;/span&gt;                };&lt;span class="lnum"&gt;  86:  &lt;/span&gt;            parameters[0].Value = &amp;lt;%= SourceTable.PrimaryKey.MemberColumns[0].Name%&amp;gt;;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;            DbHelperSQL.ExecuteSql(sb.ToString(), parameters);&lt;span class="lnum"&gt;  88:  &lt;/span&gt;        }&lt;span class="lnum"&gt;  89:  &lt;/span&gt;        &lt;span class="lnum"&gt;  90:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get Data List&lt;/span&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; DataSet GetList(&lt;span class="kwrd"&gt;string&lt;/span&gt; strWhere)&lt;span class="lnum"&gt;  94:  &lt;/span&gt;        {&lt;span class="lnum"&gt;  95:  &lt;/span&gt;            StringBuilder sb = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;span class="lnum"&gt;  96:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;"select &amp;lt;% for (int i = 0; i &amp;lt; SourceTable.Columns.Count; i++) { %&amp;gt;[&amp;lt;%= SourceTable.Columns[i].Name %&amp;gt;]&amp;lt;% if (i &amp;lt; SourceTable.Columns.Count - 1) { %&amp;gt;,&amp;lt;% } %&amp;gt;&amp;lt;% } %&amp;gt; "&lt;/span&gt;);&lt;span class="lnum"&gt;  97:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;" FROM &amp;lt;%= SourceTable.FullName %&amp;gt; "&lt;/span&gt;);&lt;span class="lnum"&gt;  98:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (strWhere.Trim() != &lt;span class="str"&gt;""&lt;/span&gt;)&lt;span class="lnum"&gt;  99:  &lt;/span&gt;            {&lt;span class="lnum"&gt; 100:  &lt;/span&gt;                sb.Append(&lt;span class="str"&gt;" where "&lt;/span&gt; + strWhere);&lt;span class="lnum"&gt; 101:  &lt;/span&gt;            }&lt;span class="lnum"&gt; 102:  &lt;/span&gt;            sb.Append(&lt;span class="str"&gt;" order by &amp;lt;%= SourceTable.PrimaryKey.MemberColumns[0].Name %&amp;gt; desc "&lt;/span&gt;);&lt;span class="lnum"&gt; 103:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; DbHelperSQL.Query(sb.ToString());&lt;span class="lnum"&gt; 104:  &lt;/span&gt;        }&lt;span class="lnum"&gt; 105:  &lt;/span&gt;        &lt;span class="lnum"&gt; 106:  &lt;/span&gt;        &lt;span class="rem"&gt;//#endregion&lt;/span&gt;&lt;span class="lnum"&gt; 107:  &lt;/span&gt;    }&lt;span class="lnum"&gt; 108:  &lt;/span&gt;}&lt;/div&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;p&gt;第一次写这样的模板，有些许欠缺请大家指点。&lt;/p&gt;&lt;p&gt;前段时间看到有人在园子里写微软的代码生成CodeDom，这段时间也看看了解一下，微软的代码生成。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jane_Wang/aggbug/1797899.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jane_Wang/archive/2010/08/12/1797899.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jane_Wang/archive/2010/08/07/1794845.html</id><title type="text">Access使用参数方法更新数据库的问题</title><summary type="text">在昨天下午就遇到了这个问题，但是调试一直都能成功，但是数据却总是没有更新。在网上搜索了下，这方面的东西还是挺少的，可能是因为Access数据库用得少，或者是在更新的时候使大多人不用参数方式的原因吧，今天我把我的经历记录一下吧。以后也可以做参考。原来有误的代码：因为这个代码是使用动软代码生成器自动生成的，所以我可以肯定代码是无误的，可是问题出在我修改了参数，自动生成的代码里包含可以更新ID，我数据库...</summary><published>2010-08-07T12:57:00Z</published><updated>2010-08-07T12:57:00Z</updated><author><name>零末</name><uri>http://www.cnblogs.com/Jane_Wang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jane_Wang/archive/2010/08/07/1794845.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jane_Wang/archive/2010/08/07/1794845.html"/><content type="html">&lt;p&gt;在昨天下午就遇到了这个问题，但是调试一直都能成功，但是数据却总是没有更新。在网上搜索了下，这方面的东西还是挺少的，可能是因为Access数据库用得少，或者是在更新的时候使大多人不用参数方式的原因吧，今天我把我的经历记录一下吧。以后也可以做参考。&lt;/p&gt;&lt;p&gt;原来有误的代码：&lt;/p&gt;&lt;div class="csharpcode"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;StringBuilder strSql = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;span class="lnum"&gt;   2:  &lt;/span&gt;strSql.Append(&lt;span class="str"&gt;"update news_Table set "&lt;/span&gt;);&lt;span class="lnum"&gt;   3:  &lt;/span&gt;strSql.Append(&lt;span class="str"&gt;"NewsTitle=@NewsTitle,"&lt;/span&gt;);&lt;span class="lnum"&gt;   4:  &lt;/span&gt;strSql.Append(&lt;span class="str"&gt;"NewsContent=@NewsContent,"&lt;/span&gt;);&lt;span class="lnum"&gt;   5:  &lt;/span&gt;strSql.Append(&lt;span class="str"&gt;"NewsReporter=@NewsReporter"&lt;/span&gt;);&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="lnum"&gt;   7:  &lt;/span&gt;strSql.Append(&lt;span class="str"&gt;" where NewsID=@NewsID "&lt;/span&gt;);&lt;span class="lnum"&gt;   8:  &lt;/span&gt;OleDbParameter[] parameters = {&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbParameter(&lt;span class="str"&gt;"@NewsID"&lt;/span&gt;, OleDbType.Integer,4),&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbParameter(&lt;span class="str"&gt;"@NewsTitle"&lt;/span&gt;, OleDbType.VarChar),&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbParameter(&lt;span class="str"&gt;"@NewsContent"&lt;/span&gt;, OleDbType.VarChar),&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbParameter(&lt;span class="str"&gt;"@NewsReporter"&lt;/span&gt;, OleDbType.VarChar)};&lt;span class="lnum"&gt;  13:  &lt;/span&gt;parameters[0].Value = model.NewsID;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;parameters[1].Value = model.NewsTitle;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;parameters[2].Value = model.NewsContent;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;parameters[3].Value = model.NewsReporter;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            &lt;span class="lnum"&gt;  18:  &lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);&lt;/div&gt;&lt;style type="text/css"&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;因为这个代码是使用动软代码生成器自动生成的，所以我可以肯定代码是无误的，可是问题出在我修改了参数，自动生成的代码里包含可以更新ID，我数据库里的ID是自动增长的，所以不能更新，我也就直接删除了ID，变成上面的错误代码。就这样，问题就出来啦，不管我如何调试，都无济于事，始终不能更新到数据库。&lt;/p&gt;&lt;p&gt;在琢磨很久之后，换成更加不同的方式来更新数据库，也就是不使用@传参数，直接使用++方式的代码。&lt;/p&gt;&lt;p&gt;++方式的代码：&lt;/p&gt;&lt;div class="csharpcode"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; strSql;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;strSql=&lt;span class="str"&gt;"update news_Table set NewsTitle='"&lt;/span&gt;+model.NewsTitle+&lt;span class="str"&gt;"',NewsContent='"&lt;/span&gt;+model.NewsContent+&lt;span class="str"&gt;"',NewsReporter='"&lt;/span&gt;+&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        model.NewsReporter+&lt;span class="str"&gt;"'  where NewsID="&lt;/span&gt;+model.NewsID;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; DbHelperOleDb.ExecuteSql(strSql);&lt;/div&gt;&lt;style type="text/css"&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;使用这种方式可以很顺利的更新数据库里的数据。&lt;/p&gt;&lt;p&gt;这样的结果让我很抓狂。我不知道该怎么办好，我想不通为什么传参数的方式不行，但是直接写的方式就可以。接着就是我疯狂地在Google上搜索的这方面的资料，但是搜到这方面和我同样的问题的日志不多。但是还是有解决这个问题的解决方案，那就是参数赋值顺序和传入的时候一致，下面贴出正确的代码：&lt;/p&gt;&lt;p&gt;正确传参数的代码：&lt;/p&gt;&lt;div class="csharpcode"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;StringBuilder strSql = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;span class="lnum"&gt;   2:  &lt;/span&gt;strSql.Append(&lt;span class="str"&gt;"update news_Table set "&lt;/span&gt;);&lt;span class="lnum"&gt;   3:  &lt;/span&gt;strSql.Append(&lt;span class="str"&gt;"NewsTitle=@NewsTitle,"&lt;/span&gt;);&lt;span class="lnum"&gt;   4:  &lt;/span&gt;strSql.Append(&lt;span class="str"&gt;"NewsContent=@NewsContent,"&lt;/span&gt;);&lt;span class="lnum"&gt;   5:  &lt;/span&gt;strSql.Append(&lt;span class="str"&gt;"NewsReporter=@NewsReporter"&lt;/span&gt;);&lt;span class="lnum"&gt;   6:  &lt;/span&gt;strSql.Append(&lt;span class="str"&gt;" where NewsID=@NewsID "&lt;/span&gt;);&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;OleDbParameter[] parameters = {&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbParameter(&lt;span class="str"&gt;"@NewsTitle"&lt;/span&gt;, OleDbType.VarChar),&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbParameter(&lt;span class="str"&gt;"@NewsContent"&lt;/span&gt;, OleDbType.VarChar),&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbParameter(&lt;span class="str"&gt;"@NewsReporter"&lt;/span&gt;, OleDbType.VarChar),&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbParameter(&lt;span class="str"&gt;"@NewsID"&lt;/span&gt;, OleDbType.Integer,4)};&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;nbsp;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;parameters[0].Value = model.NewsTitle;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;parameters[1].Value = model.NewsContent;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;parameters[2].Value = model.NewsReporter;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;parameters[3].Value = model.NewsID;           &lt;span class="lnum"&gt;  18:  &lt;/span&gt;&amp;nbsp;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);&lt;/div&gt;&lt;style type="text/css"&gt;&lt;!--.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }--&gt;&lt;/style&gt;&lt;p&gt;只是参数顺序改变了一下就可以正常更新Access数据库啦，也许这应该是Access的一个Bug吧，也许Access本来就如此，比MSSQL语法要严格。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;总结&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Access和MSSQL还是有不同的，不能够一味的按照MSSQL的方式去解决Access上的问题，只是有一些相同。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jane_Wang/aggbug/1794845.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jane_Wang/archive/2010/08/07/1794845.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jane_Wang/archive/2010/08/02/1790438.html</id><title type="text">《ASP .NET MVC 1.0 Quickly》学习笔记（一）</title><summary type="text">在网上看MVC相关的博客也有一段时间啦，到现在ASP.NET MVC 3 preview 也已经出来啦，但是我还是想从头开始，现在直接是mvc 2或3的资料也没有，scott，phil的博客里也没有很多相关的资料，相对来说，mvc 1 的资料比较多，所以学习起来也比较便捷。 今天就对阅读《ASP .NET MVC 1.0 Quickly》这本电子书，写一些对MVC的看法，或者笔记吧。 1.MVC是...</summary><published>2010-08-02T06:27:00Z</published><updated>2010-08-02T06:27:00Z</updated><author><name>零末</name><uri>http://www.cnblogs.com/Jane_Wang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jane_Wang/archive/2010/08/02/1790438.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jane_Wang/archive/2010/08/02/1790438.html"/><content type="html">&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;在网上看MVC相关的博客也有一段时间啦，到现在ASP.NET MVC 3 preview 也已经出来啦，但是我还是想从头开始，现在直接是mvc 2或3的资料也没有，scott，phil的博客里也没有很多相关的资料，相对来说，mvc 1 的资料比较多，所以学习起来也比较便捷。&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;今天就对阅读《ASP .NET MVC 1.0 Quickly》这本电子书，写一些对MVC的看法，或者笔记吧。&lt;/p&gt;    &lt;p&gt;1.MVC是Model-View-Controller的简称，具体如何我也不必解释，网上有很多关于这方面的博客文章。&lt;/p&gt;    &lt;p&gt;2.ASP .NET MVC 可以说是彻底抛弃了WebForm的服务端控件，回归到原来的ASP的阶段，但还是和ASP有很大不同的，MVC提倡彻底分离业务逻辑和页面逻辑。不像ASP把代码混合在一起。MVC更加方便于单元测试，现在驱动测试开发（TDD)比较流行，我个人觉得如果不是什么大项目和一个很多人的团队工作，没什么必要使用TDD，使用文档测试开发已经足够，而且开发起来比TDD方便，快捷。&lt;/p&gt;    &lt;p&gt;下面来创建一个Demo：&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jane_Wang/WindowsLiveWriter/ASP.NETMVC1.0Quickly_CB1A/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jane_Wang/WindowsLiveWriter/ASP.NETMVC1.0Quickly_CB1A/image_thumb.png" width="244" height="174" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;选择创建单元测试项目，按“确定”创建成功。项目创建完后你可以发现里面有两个项目：&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jane_Wang/WindowsLiveWriter/ASP.NETMVC1.0Quickly_CB1A/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jane_Wang/WindowsLiveWriter/ASP.NETMVC1.0Quickly_CB1A/image_thumb_1.png" width="164" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;而且你会这项目里发现，你可以很方便地使用jQuery或MS AJAX。&lt;/p&gt;    &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/Jane_Wang/WindowsLiveWriter/ASP.NETMVC1.0Quickly_CB1A/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/Jane_Wang/WindowsLiveWriter/ASP.NETMVC1.0Quickly_CB1A/image_thumb_2.png" width="208" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;MS已经帮我们嵌入了我们会用到的一些JS文件。&lt;/p&gt;    &lt;p&gt;在这个项目里你可以看到你并没有发现像WebForm那样，Default.aspx来担当启动页面（PS：我用的是vs2010里的mvc 2，所以mvc里没有Default.aspx页面，在1里是有Default.aspx的）。那么我们的起始页面在哪里呢？那就先看看Global.asax文件，包含了这样一段代码&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:b59e17e5-e4be-41b4-af04-9c568767020c" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;!--&lt;br/&gt;&lt;br/&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/&gt;http://www.CodeHighlighter.com/&lt;br/&gt;&lt;br/&gt;--&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Collections.Generic;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Linq;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Web;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Web.Mvc;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Web.Routing;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000;"&gt; MvcApplication1&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt;{&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 注意: 有关启用 IIS6 或 IIS7 经典模式的说明，&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #008000;"&gt;  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 请访问 &lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;http://go.microsoft.com/?LinkId=9394801&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt;  &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; MvcApplication : System.Web.HttpApplication&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;  {&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; RegisterRoutes(RouteCollection routes)&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt;    {&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #000000;"&gt;      routes.IgnoreRoute(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;{resource}.axd/{*pathInfo}&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt; &lt;span style="color: #000000;"&gt;      routes.MapRoute(&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt; &lt;span style="color: #000000;"&gt;          &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Default&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 路由名称&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;          &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;{controller}/{action}/{id}&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 带有参数的 URL&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;          &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; { controller &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Home&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, action &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Index&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, id &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; UrlParameter.Optional } &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 参数默认值&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;      );&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;protected&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Application_Start()&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt; &lt;span style="color: #000000;"&gt;    {&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt; &lt;span style="color: #000000;"&gt;      AreaRegistration.RegisterAllAreas();&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt; &lt;span style="color: #000000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt; &lt;span style="color: #000000;"&gt;      RegisterRoutes(RouteTable.Routes);&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;32&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;33&lt;/span&gt; &lt;span style="color: #000000;"&gt;  }&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;34&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;在里面你可以发现这样一个方法，&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:5765cde1-cf09-4752-b3cf-65f65811d296" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;!--&lt;br/&gt;&lt;br/&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/&gt;http://www.CodeHighlighter.com/&lt;br/&gt;&lt;br/&gt;--&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; &lt;span style="color: #000000;"&gt;routes.MapRoute(&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt; &lt;span style="color: #000000;"&gt;          &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Default&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 路由名称&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;          &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;{controller}/{action}/{id}&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 带有参数的 URL&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;4&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;          &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; { controller &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Home&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, action &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Index&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;, id &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; UrlParameter.Optional } &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 参数默认值&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;5&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;      );&lt;/span&gt;&lt;/div&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;这里主要讲了，页面是通过Route来实现跳转的，这个跳转在整个应用程序里起到很关键的作用，如果我们要访问view-&amp;gt;home文件夹下的index，就可以使用&lt;a href="http://localhost:1234/home/Index"&gt;http://localhost:1234/home/Index&lt;/a&gt;,当然我们还可以自己增加route方式：&lt;/p&gt;  &lt;p&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:17c3f01d-071a-44eb-9775-571b7383befd" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;!--&lt;br/&gt;&lt;br/&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/&gt;http://www.CodeHighlighter.com/&lt;br/&gt;&lt;br/&gt;--&gt;&lt;span style="color: #008080;"&gt;1&lt;/span&gt; &lt;span style="color: #000000;"&gt;routes.MapRoute(&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;2&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;products&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;3&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;products/{action}/{id}&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;4&lt;/span&gt; &lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; {action&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Index&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;,id&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; }&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;5&lt;/span&gt; &lt;span style="color: #000000;"&gt;        );&lt;/span&gt;&lt;/div&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;  &lt;/p&gt;  &lt;p&gt;今天就先写到这里，谢谢！&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/Jane_Wang/aggbug/1790438.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jane_Wang/archive/2010/08/02/1790438.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775501.html</id><title type="text">struct和typedef struct</title><summary type="text">分三块来讲述： 1 首先：    在C中定义一个结构体类型要用typedef:     typedef struct Student     {  &amp;#1...</summary><published>2010-07-12T01:27:00Z</published><updated>2010-07-12T01:27:00Z</updated><author><name>零末</name><uri>http://www.cnblogs.com/Jane_Wang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775501.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775501.html"/><content type="html">&lt;p&gt;分三块来讲述：   &lt;br /&gt;1 首先：    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在C中定义一个结构体类型要用typedef:    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; typedef struct Student    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int a;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }Stu;    &lt;br /&gt;于是在声明变量的时候就可：Stu stu1;    &lt;br /&gt;如果没有typedef就必须用struct Student stu1;来声明    &lt;br /&gt;这里的Stu实际上就是struct Student的别名。    &lt;br /&gt;另外这里也可以不写Student（于是也不能struct Student stu1;了）    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; typedef struct    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int a;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }Stu;    &lt;br /&gt;但在c++里很简单，直接    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; struct Student    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int a;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };    &lt;br /&gt;于是就定义了结构体类型Student，声明变量时直接Student stu2；    &lt;br /&gt;===========================================    &lt;br /&gt;2其次：    &lt;br /&gt;在c++中如果用typedef的话，又会造成区别：    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; struct&amp;#160;&amp;#160; Student&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int&amp;#160;&amp;#160; a;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }stu1;//stu1是一个变量&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; typedef&amp;#160;&amp;#160; struct&amp;#160;&amp;#160; Student2&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int&amp;#160;&amp;#160; a;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }stu2;//stu2是一个结构体类型&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;使用时可以直接访问stu1.a    &lt;br /&gt;但是stu2则必须先&amp;#160;&amp;#160; stu2 s2;    &lt;br /&gt;然后&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; s2.a=10;    &lt;br /&gt;===========================================    &lt;br /&gt;3 掌握上面两条就可以了，不过最后我们探讨个没多大关系的问题    &lt;br /&gt;如果在c程序中我们写：    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; typedef struct&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int num;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int age;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }aaa,bbb,ccc;    &lt;br /&gt;这算什么呢？    &lt;br /&gt;我个人观察编译器（VC6）的理解，这相当于    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; typedef struct&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int num;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int age;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }aaa；    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; typedef aaa bbb;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; typedef aaa ccc;    &lt;br /&gt;也就是说aaa,bbb,ccc三者都是结构体类型。声明变量时用任何一个都可以,在c++中也是如此。但是你要注意的是这个在c++中如果写掉了typedef关键字，那么aaa，bbb，ccc将是截然不同的三个对象。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jane_Wang/aggbug/1775501.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775501.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775498.html</id><title type="text">【转】JavaScript不能做到的事</title><summary type="text">JavaScript不能做到的事 作者: vivian, 出处:IT专家网, 责任编辑: 包春林, 2009-02-17 09:05 虽然在很多方面，JavaScript可用于改进您的网页并提高您的访问网站的效率，但是也有几件事的JavaScript不能做到的。其中的一些限制是由于该脚本浏览器窗口运行，因此无法访问服务器，而另一些则是出于安全性的考虑，以阻止网页篡改您的计算机。 虽然在很多方面...</summary><published>2010-07-12T01:23:00Z</published><updated>2010-07-12T01:23:00Z</updated><author><name>零末</name><uri>http://www.cnblogs.com/Jane_Wang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775498.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775498.html"/><content type="html">&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;b&gt;不能做到的事&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;作者: vivian, 出处:IT专家网, 责任编辑: 包春林,&lt;/p&gt;  &lt;p&gt;2009-02-17 09:05&lt;/p&gt;  &lt;p&gt;&lt;b&gt; 虽然在很多方面，JavaScript可用于改进您的网页并提高您的访问网站的效率，但是也有几件事的JavaScript不能做到的。其中的一些限制是由于该脚本浏览器窗口运行，因此无法访问服务器，而另一些则是出于安全性的考虑，以阻止网页篡改您的计算机。&lt;/b&gt;&lt;/p&gt;  &lt;p&gt; 虽然在很多方面，JavaScript可用于改进您的网页并提高您的访问网站的效率，但是也有几件事的JavaScript不能做到的。其中的一些限制是由于该脚本浏览器窗口运行，因此无法访问服务器，而另一些则是出于安全性的考虑，以阻止网页篡改您的计算机。对于这些局限性还没有可以解决的办法，而任何抱怨其电脑不能通过JavaScript执行下列任务的人，是因为没有对所要做的事情考虑周全。&lt;/p&gt;  &lt;p&gt;&lt;b&gt; 没有服务器端脚本的帮助，JavaScript就不能在服务器上写文件&lt;/b&gt;&lt;/p&gt;  &lt;p&gt; 使用Ajax，JavaScript可以向服务器发送请求。这个请求可以用XML或纯文本的方式读取文件，但是它不能写文件，除非被服务器调用的文件以脚本方式运行才能写文件。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;JavaScript不能访问数据库&lt;/b&gt;&lt;/p&gt;  &lt;p&gt; 除非你使用Ajax，并且服务器端脚本为你执行数据库访问&lt;/p&gt;  &lt;p&gt;&lt;b&gt;JavaScript不能从用户处读取或写文件&lt;/b&gt;&lt;/p&gt;  &lt;p&gt; 尽管JavaScript在用户端计算机上运行，而该用户端也正在浏览网页，但仍不允许对任何网页本身以外的数据进行访问。这样做是出于安全的考虑，因为其他网页有可能更新您的计算机并且非法安装上我们都不清楚的东西。唯一例外的是所谓的cookies文件，它是小文本文件，可以由JavaScript写入和读取。该浏览器限制对&lt;a href="http://whatis.ctocio.com.cn/searchwhatis/425/5947425.shtml"&gt;Cookie&lt;/a&gt;的访问，所以一个给定的网页只能访问该网页所创造的cookie。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;如果没有打开窗口，JavaScript不能选择窗口&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt; 该项限制同样出于安全性的考虑&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;JavaScript不能访问网页&lt;/b&gt;&lt;/p&gt;  &lt;p&gt; 尽管不同的网页可以在同一时间打开，可以在单独的浏览器中或者同一个浏览器的不同窗体中打开。在网页上运行的JavaScript从属于一个网页，因此不能访问来自不同&lt;a href="http://whatis.ctocio.com.cn/searchwhatis/194/7352194.shtml"&gt;域&lt;/a&gt;名中不同网页的信息。这一限制有助于确保你的隐私信息不会被其他同时打开网页的人共享。而唯一能访问来自另一域名的文件的方法是对你的服务器进行Ajax调用，并却具备一个可以访问其他域名的服务器端脚本。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;JavaScript不能保护你的页面资源和图像&lt;/b&gt;&lt;/p&gt;  &lt;p&gt; 页面上的任何图像都是分开下载到电脑上的，所以我们在看网页的时候，就已经拥有了所有图像的备份。而对于网页上真正的HTML资源，也同样如此。网页需要解密所有加密的网页，以显示该网页。而一个加密的我那个也可能要求按顺序依次激活JavaScript，以达到依次解密再显示出来的目的。一旦网页被解密，任何知道该方法的人都能轻易保存解密的网页资源备份。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jane_Wang/aggbug/1775498.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775498.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775497.html</id><title type="text">Javascript对象化</title><summary type="text">JavaScript绝对是个好东西，也是一个有趣的东西。JavaScript是一种弱类型的编程语言，但是它还有对象化的功能。虽然只有function一种表达方式，但是已经足够做些事情啦~ 先看下函数的几个定义方式： 普通方式： function x(){//函数体} 定义方式： var x=function(){//函数体} 利用Function构造函数方式： var x = new...</summary><published>2010-07-12T01:22:00Z</published><updated>2010-07-12T01:22:00Z</updated><author><name>零末</name><uri>http://www.cnblogs.com/Jane_Wang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775497.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775497.html"/><content type="html">&lt;p&gt;JavaScript绝对是个好东西，也是一个有趣的东西。JavaScript是一种弱类型的编程语言，但是它还有对象化的功能。虽然只有function一种表达方式，但是已经足够做些事情啦~&lt;/p&gt;  &lt;p&gt;先看下函数的几个定义方式：&lt;/p&gt;  &lt;p&gt;普通方式：&lt;/p&gt;  &lt;p&gt;function x(){//函数体}&lt;/p&gt;  &lt;p&gt;定义方式：&lt;/p&gt;  &lt;p&gt;var x=function(){//函数体}&lt;/p&gt;  &lt;p&gt;利用Function构造函数方式：&lt;/p&gt;  &lt;p&gt;var x = new Function(“LingMo”, “alert(LingMo);”);&lt;/p&gt;  &lt;p&gt;下面看下对象化：&lt;/p&gt;  &lt;p&gt;var x=function(name){&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.name=name;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.shuxi =function(){alert (&amp;quot;Hello , I'm &amp;quot;+this.name);};&lt;/p&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;var xx=new x(&amp;quot;LingMo&amp;quot;);&lt;/p&gt;  &lt;p&gt;alert(xx.name);&lt;/p&gt;  &lt;p&gt;xx.shuxi();&lt;/p&gt;  &lt;p&gt;这里有几个问题需要注意一下：x不能访问name属性和shuxi方法，只能由xx调用；&lt;/p&gt;  &lt;p&gt;创建对象的过程：第一 创建一个空对象，第二 将类的原型赋值给 对象的内置原型，第三 执行构造函数 初始化   &lt;br /&gt;在这里，第一步：var xx={};创建一个xx对象；&lt;/p&gt;  &lt;p&gt;第二步：将x.prototype 传递给xx的内置原型对象（对外不可见），这样xx对象就可以访问xx类原型定义的方法了&lt;/p&gt;  &lt;p&gt;第三步：在执行 构造函数 即x.call(xx,&amp;quot;LingMo&amp;quot;)   &lt;br /&gt;函数都有call方法，第一个参数就是创建的对象，后面的就是 函数的参数&lt;/p&gt;  &lt;p&gt;一开始我没把this弄清楚：在这里this指对xx&lt;/p&gt;  &lt;p&gt;如果不用对象化执行，直接就由x(&amp;quot;LingMo&amp;quot;);调用，这样的话，this指对window；这样就为window添加了一个name属性和shuxi方法。在含有this的function中如果直接调用的话，可能会很不安全，可能设置的属性会覆盖内置的属性，这样就造成难以预测的问题。。&lt;/p&gt;  &lt;p&gt;其中这里对象化已经涉及到prototype（原型），原型的问题下次再记录啦~……&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jane_Wang/aggbug/1775497.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775497.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775496.html</id><title type="text">C# checked、unchecked操作符</title><summary type="text">checked和unchecked操作符用于整型算术运算时控制当前环境中的溢出检查。下列运算参与了checked和unchecked检查（操作数均为整数）： 1） 预定义的＋＋和――一元运算符。 2） 预定义的－一元运算符。 3） 预定义的＋、－、×、/等二元操作符。 4） 从一种整型到另一种整型的显示数据转换。 当上述整型运算产生一个目标类型无法...</summary><published>2010-07-12T01:19:00Z</published><updated>2010-07-12T01:19:00Z</updated><author><name>零末</name><uri>http://www.cnblogs.com/Jane_Wang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775496.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775496.html"/><content type="html">&lt;p&gt;checked和unchecked操作符用于整型算术运算时控制当前环境中的溢出检查。下列运算参与了checked和unchecked检查（操作数均为整数）：    &lt;br /&gt;1）&amp;#160; 预定义的＋＋和――一元运算符。     &lt;br /&gt;2）&amp;#160; 预定义的－一元运算符。     &lt;br /&gt;3）&amp;#160; 预定义的＋、－、×、/等二元操作符。     &lt;br /&gt;4）&amp;#160; 从一种整型到另一种整型的显示数据转换。&lt;/p&gt;  &lt;p&gt;当上述整型运算产生一个目标类型无法表示的大数时，可以有相应的处理方式：&lt;/p&gt;  &lt;p&gt;（一）使用checked    &lt;br /&gt;若运算是常量表达式，则产生编译错误：The operation overflows at complie time in checked mode.     &lt;br /&gt;若运算是非常量表达式，则运行时会抛出一个溢出异常：OverFlowException异常&lt;/p&gt;  &lt;p&gt;（二）使用unchecked    &lt;br /&gt;无论运算是否是常量表达式，都没有编译错误或是运行时异常发生，只是返回值被截掉不符合目标类型的高位。&lt;/p&gt;  &lt;p&gt;（三）既未使用checked又未使用unchecked    &lt;br /&gt;若运算是常量表达式，默认情况下总是进行溢出检查，同使用checked一样，会无法通过编译。     &lt;br /&gt;若运算是非常量表达式，则是否进行溢出检查，取决于外部因素，包括编译器状态、执行环境参数等。     &lt;br /&gt;文章出处：DIY部落(&lt;a href="http://www.diybl.com/course/4_webprogram/asp.net/netjs/20091107/181586.html"&gt;http://www.diybl.com/course/4_webprogram/asp.net/netjs/20091107/181586.html&lt;/a&gt;)&lt;/p&gt;&lt;img src="http://www.cnblogs.com/Jane_Wang/aggbug/1775496.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/Jane_Wang/archive/2010/07/12/1775496.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
