<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D0cFRXw_eip7ImA9WhRUFUw.&quot;"><id>tag:blogger.com,1999:blog-32055966</id><updated>2012-01-26T02:10:14.242+08:00</updated><category term="Windows Phone" /><category term="C#" /><category term="程式概念" /><category term="新聞新奇" /><category term="心情雜記" /><category term="系統設定" /><category term="攝影" /><category term="電影..書.." /><category term="MVC" /><category term="(轉貼)好文章" /><category term="CSS" /><category term="Linq" /><category term="作品創作" /><category term="亂七八糟" /><category term="影音" /><category term="JavaScript" /><category term="MS SQL" /><category term="日常生活" /><category term="WPF" /><category term="Blog" /><category term="Silverlight" /><category term="ASP.NET" /><category term="軟體試用" /><category term="ADO.NET" /><title>Simple Thoughts on Everything</title><subtitle type="html">多說無益..做就對啦..衝衝衝..</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://bibby.be/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://bibby.be/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>362</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/SimpleThoughtsOnEverything" /><feedburner:info uri="simplethoughtsoneverything" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D0cFRXw-eip7ImA9WhRUFUw.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-6417734143334401850</id><published>2012-01-25T00:09:00.005+08:00</published><updated>2012-01-26T02:10:14.252+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-26T02:10:14.252+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone" /><title>Lose the windows phone template in visual studio 2010</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hADsuKpgU9Oo5MvUE5u0Wkd1Dxc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hADsuKpgU9Oo5MvUE5u0Wkd1Dxc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hADsuKpgU9Oo5MvUE5u0Wkd1Dxc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hADsuKpgU9Oo5MvUE5u0Wkd1Dxc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;今天在安裝 windows phone 7.1 的 sdk，遇到了一個問題，就是安裝完後在 visual studio 2010 找不到 windows phone 的 template，網路搜尋這個問題，這裡整理一下解決方法，讓有遇到問題的人，也能很快的把問題解決掉&lt;/p&gt;  &lt;p&gt;1.先到路徑 Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Silverlight for Windows Phone 找 template，如果沒有這個 folder，那 sdk 應該沒裝成功，再裝一次吧！&lt;/p&gt;  &lt;p&gt;2.確認你的 visual studio 的語言版本，如果是英文就把把 template folder 的改成 1033 如果是中文改成 1028，建議留下原來的用複製的方式來改檔案名&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-tjzehTeF5Wk/Tx7XvOGDo-I/AAAAAAAADKg/jN1y6WffB1o/s1600-h/clip_image001%25255B5%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" alt="clip_image001" src="http://lh4.ggpht.com/-jsah1RxQwOo/Tx7Xv1n2Y7I/AAAAAAAADKk/OUQ2HY2RZSE/clip_image001_thumb%25255B2%25255D.png?imgmax=800" height="181" border="0" width="329" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;3.把 visual studio command prompt 的叫出來執行 devenv /installvstemplates，如果有權限問題，請用administrator來執行&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-mg60yLoa8i8/Tx7Xwdn3uDI/AAAAAAAADKs/dlrApQRYsEA/s1600-h/clip_image002%25255B5%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" alt="clip_image002" src="http://lh6.ggpht.com/-Q2fw9DalwPM/Tx7XxdjSYUI/AAAAAAAADK0/Nbco98cL-zI/clip_image002_thumb%25255B2%25255D.png?imgmax=800" height="248" border="0" width="234" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt; 這樣 template 就出來啦！&lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-WjykdVVlsZk/Tx7Xx_jxPZI/AAAAAAAADK8/oe6Tlf12YJg/s1600-h/clip_image003%25255B5%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image003" alt="clip_image003" src="http://lh3.ggpht.com/-B4ou_M6__mc/Tx7XyiVm7kI/AAAAAAAADLE/6HKHgW5S5cg/clip_image003_thumb%25255B2%25255D.png?imgmax=800" height="418" border="0" width="606" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;有問題再討論吧！！&lt;/p&gt;    &lt;p&gt;參考：  &lt;br /&gt;&lt;a target="_blank" href="http://stackoverflow.com/questions/7313376/visual-studio-2010-lost-the-wp7-templates"&gt;http://stackoverflow.com/questions/7313376/visual-studio-2010-lost-the-wp7-templates&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-6417734143334401850?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/P1uVRUhPnco" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/6417734143334401850/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=6417734143334401850" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/6417734143334401850?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/6417734143334401850?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/P1uVRUhPnco/lose-windows-phone-template-in-visual.html" title="Lose the windows phone template in visual studio 2010" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-jsah1RxQwOo/Tx7Xv1n2Y7I/AAAAAAAADKk/OUQ2HY2RZSE/s72-c/clip_image001_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2012/01/lose-windows-phone-template-in-visual.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUABR306eip7ImA9WhRXFEo.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-5400254196308404260</id><published>2011-12-21T16:10:00.004+08:00</published><updated>2011-12-21T21:22:36.312+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T21:22:36.312+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>UserControl 傳值</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/j3bthHTn3f493ilHXnT3fiDwU8Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j3bthHTn3f493ilHXnT3fiDwU8Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/j3bthHTn3f493ilHXnT3fiDwU8Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/j3bthHTn3f493ilHXnT3fiDwU8Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;之前有人問說，如果兩個 UserControl 在同一個page，要怎麼互相把值丟來丟去，這問題好像有學 .net 的人都會碰到，Bibby 的想法很簡單，只要雙方的可以知道彼此，那想怎樣就可以怎樣了，接下來寫個簡單的範例，加上點小技巧，希望大家可以了解&lt;/p&gt;  &lt;p&gt;先來個圖例&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-inv4cAXFa1U/TvGUUOGl8II/AAAAAAAADJ0/hO9XG9J7B5c/s1600-h/image%25255B4%25255D.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://lh3.ggpht.com/-NH6V8LXbrw8/TvGUXHgdclI/AAAAAAAADJ8/Eno_hA9pX4k/image_thumb%25255B2%25255D.png?imgmax=800" width="607" height="175" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;再看結果&lt;/p&gt; &lt;a href="http://lh6.ggpht.com/-3lygUjxgHlE/TvGUZIm0QKI/AAAAAAAADKE/vh1s3cML-pk/s1600-h/image%25255B9%25255D.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://lh3.ggpht.com/-y2z5-S3UPTw/TvGUbtJD6ZI/AAAAAAAADKM/Ce_hzzOHVCc/image_thumb%25255B5%25255D.png?imgmax=800" width="322" height="217" /&gt;&lt;/a&gt;   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;實戰演練：&lt;/p&gt;  &lt;p&gt;先新增這兩個interface&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #008000"&gt;/// 讓Page實作，讓Page有Container的功能&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;interface&lt;/span&gt; IContainer&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; GetObj(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; key);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; AddObj(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; key,&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; o);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #008000"&gt;/// 讓顯示的uc2來實作，這樣就會有接值得功能&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;interface&lt;/span&gt; ICommand&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ToDo(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; obj);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;Default.cs(Page)&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;  &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;partial&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt; _Default : System.Web.UI.Page, IContainer&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&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; &lt;span style="color: #008000"&gt;//把uc加進去，讓其他頁面可以取得想要的uc&lt;/span&gt;&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; dic.Add(&lt;span style="color: #006080"&gt;&amp;quot;uc1&amp;quot;&lt;/span&gt;, Uc11);&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; dic.Add(&lt;span style="color: #006080"&gt;&amp;quot;uc2&amp;quot;&lt;/span&gt;, Uc21);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #008000"&gt;//這裡把uc都加入，以後要找uc就來這找就行了&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dictionary&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;gt; dic = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;gt;();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; GetObj(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; key)&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; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (dic.ContainsKey(key))&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;&amp;#160; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; dic[key];&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; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; AddObj(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; key, &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; obj)&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; dic[key] = obj;&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; }&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Uc1.cs&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;partial&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Uc1 : System.Web.UI.UserControl&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnInit(EventArgs e)&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; &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.OnInit(e);&lt;br /&gt; &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; btn.Click += &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; EventHandler(btn_Click);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; btn_Click(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&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; &lt;span style="color: #008000"&gt;//確認Page是否實作IContainer&lt;/span&gt;&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; var container = Page &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; IContainer;&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; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Page == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&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;&amp;#160; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&lt;br /&gt; &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; &lt;span style="color: #008000"&gt;//確認uc2是否有時做ICommand&lt;/span&gt;&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; var uc2 = container.GetObj(&lt;span style="color: #006080"&gt;&amp;quot;uc2&amp;quot;&lt;/span&gt;);&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; var command = uc2 &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; ICommand;&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; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (command == &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&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;&amp;#160; &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&lt;br /&gt; &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; command.ToDo(DateTime.Now);&lt;br /&gt; &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; &lt;span style="color: #008000"&gt;//((Page as IContainer).GetObj(&amp;quot;uc2&amp;quot;) as ICommand).ToDo(DateTime.Now);&lt;/span&gt;&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; }&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Uc2.cs&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;partial&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Uc2 : System.Web.UI.UserControl, ICommand&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;br /&gt; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&amp;#160;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ToDo(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; obj)&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; lit.Text = obj.ToString();&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; }&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Code 的部份大概就是這樣子了，分兩點來解釋：&lt;/p&gt;&lt;p&gt;第一，讓 Page 實作 Icontainer 這 interface 就是要讓 Page 變成一個 Container 讓大家可以想要什麼東西就從 Page 這邊拿，我們可以經由 Page 來取得想要 uc，取得後轉型成想要的型態，傳統的方式用 FindControl 來找尋，缺點是相依性很重，很容易調一下版面或移一下 uc 就讓頁面死掉，這種作法是在 Page 裡面把 uc 一個一個加入 Container，如果之後頁面很複雜，我們沒辦法在 Page 知道哪些 uc 要加入，我們也可以在 uc 的 Init 事件加進去，反正我們最終的目的就是要把 Page 當作一個 Container，如何取得 uc 的方式統一管理&lt;/p&gt;&lt;p&gt;第二，uc2 有實作 Icommand 這 interface，其實如果沒有實作也行，只要把 object t轉成 uc2 的型別就可以了，但是在考慮相依性的問題，我們不希望 uc1 知道 uc2 是誰，實作 ICommand 就是要相依反轉降低耦合，讓 uc1 不知道 uc2，如果以後 uc2 改了，uc1 就不用動了&lt;/p&gt;&lt;p&gt;Source Code&lt;br /&gt;&lt;a href="http://dl.dropbox.com/u/19052216/WebShare/ObserverUC.zip" target="_blank"&gt;http://dl.dropbox.com/u/19052216/WebShare/ObserverUC.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;有問題一起討論吧！！&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-5400254196308404260?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/IRYha-C3-IA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/5400254196308404260/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=5400254196308404260" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/5400254196308404260?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/5400254196308404260?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/IRYha-C3-IA/usercontrol.html" title="UserControl 傳值" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-NH6V8LXbrw8/TvGUXHgdclI/AAAAAAAADJ8/Eno_hA9pX4k/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2011/12/usercontrol.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08NRn8zfCp7ImA9WhRREk0.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-1500941360411071059</id><published>2011-11-25T14:09:00.003+08:00</published><updated>2011-11-25T14:18:17.184+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-25T14:18:17.184+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><title>簡單的Text Templating</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vWPMN7T_g8LphQfyPPIEXgtUosU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vWPMN7T_g8LphQfyPPIEXgtUosU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vWPMN7T_g8LphQfyPPIEXgtUosU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vWPMN7T_g8LphQfyPPIEXgtUosU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;最近在處理範本的問題，Bibby 習慣慣把範本寫成一個一個的text檔，然後再寫一個Parser去解析，最後用自己寫好的 class 處理，今天看到一個蠻不錯的 extention，可以很快速的解處理這個問題，在這裡分享給大家&lt;/p&gt;  &lt;p&gt;我們先開啟 console application 再開啟NuGet&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-Oi422gWrS4E/Ts8wrnHGHWI/AAAAAAAADIg/s3Amh2uixAM/s1600-h/clip_image001%25255B11%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" alt="clip_image001" src="http://lh6.ggpht.com/-X0eJmr9tq7s/Ts8wupNkxFI/AAAAAAAADIo/Fs3yQEHzNPY/clip_image001_thumb%25255B2%25255D.png?imgmax=800" height="216" width="273" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;下載GazorGenerator&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-3aDOytUuEkE/Ts8wwar05AI/AAAAAAAADIw/zBG6a3N3nGQ/s1600-h/clip_image002%25255B5%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" alt="clip_image002" src="http://lh5.ggpht.com/-g9qcuzQj0_4/Ts8wzngbslI/AAAAAAAADI4/cKtL4qRdkUQ/clip_image002_thumb%25255B2%25255D.png?imgmax=800" height="209" width="632" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;安裝完直接在目錄下會多個 SampleTemplate.cshtml 檔案，這是範本測試檔，我們直接在 Program.cs 加入下列這段code 就可以跑了&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;  border-right-style: none;  overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;            var template = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; SampleTemplate()&lt;br /&gt;          {&lt;br /&gt;              Message = &lt;span style="color:#006080;"&gt;"Bibby"&lt;/span&gt;,&lt;br /&gt;          };&lt;br /&gt;          Console.WriteLine(template.TransformText());&lt;br /&gt;          Console.ReadLine();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;我們可以看到畫面是&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-dUw9hHyPFwc/Ts8w14yDzTI/AAAAAAAADJA/dWrTwXM_9zA/s1600-h/clip_image001%25255B4%25255D%25255B3%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001[4]" alt="clip_image001[4]" src="http://lh6.ggpht.com/-QUBwRAISg74/Ts8w4FlecMI/AAAAAAAADJI/0PHu-qmTc0M/clip_image001%25255B4%25255D_thumb%25255B1%25255D.png?imgmax=800" height="123" width="206" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;這樣程式就寫完了，夠快吧! 不過我們一定會想，為啥會這樣就寫完了，我們看剛剛那個 SampleTemplate.cshtml 還有 SampleTemplate.generated.cs 就大概就明瞭了&lt;br /&gt;&lt;/p&gt;&lt;p&gt;SampleTemplate.cshtml&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;  border-right-style: none;  overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;@* Generator: Template *@&lt;br /&gt;&lt;br /&gt;@functions {&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Message { get; set; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Hello @Message!&lt;br /&gt;SampleTemplate.generated.cs&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#cc6633;"&gt;#pragma&lt;/span&gt; warning disable 1591&lt;br /&gt;&lt;span style="color:#008000;"&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;// &amp;lt;auto-generated&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;//     This code was generated by a tool.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;//     Runtime Version:4.0.30319.239&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;//     Changes to this file may cause incorrect behavior and will be lost if&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;//     the code is regenerated.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;// &amp;lt;/auto-generated&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt;//------------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; RazorTemplateTest&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;br /&gt;  [System.CodeDom.Compiler.GeneratedCodeAttribute(&lt;span style="color:#006080;"&gt;"RazorGenerator"&lt;/span&gt;, &lt;span style="color:#006080;"&gt;"1.2.0.0"&lt;/span&gt;)]&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; SampleTemplate : RazorGenerator.Templating.RazorTemplateBase&lt;br /&gt;  {&lt;br /&gt;&lt;span style="color:#cc6633;"&gt;#line&lt;/span&gt; hidden&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#cc6633;"&gt;#line&lt;/span&gt; 3 &lt;span style="color:#006080;"&gt;"..\..\SampleTemplate.cshtml"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Message { get; set; }&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#cc6633;"&gt;#line&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;default&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#cc6633;"&gt;#line&lt;/span&gt; hidden&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Execute()&lt;br /&gt;      {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WriteLiteral(&lt;span style="color:#006080;"&gt;"\r\n\r\n"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WriteLiteral(&lt;span style="color:#006080;"&gt;"\r\n\r\nHello "&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       &lt;br /&gt;          &lt;span style="color:#cc6633;"&gt;#line&lt;/span&gt; 7 &lt;span style="color:#006080;"&gt;"..\..\SampleTemplate.cshtml"&lt;/span&gt;&lt;br /&gt;Write(Message);&lt;br /&gt;&lt;br /&gt;       &lt;br /&gt;          &lt;span style="color:#cc6633;"&gt;#line&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;default&lt;/span&gt;&lt;br /&gt;          &lt;span style="color:#cc6633;"&gt;#line&lt;/span&gt; hidden&lt;br /&gt;WriteLiteral(&lt;span style="color:#006080;"&gt;"!\r\n"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;span style="color:#cc6633;"&gt;#pragma&lt;/span&gt; warning restore 1591&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;SampleTemplate.generated.cs是自動產生出來的，裡面程式都實作完了，所以畫面就會是你想要的結果了，那要怎麼設定才有自動產生的功能呢？我們看一下 SampleTemplate.cshtml 的Properties&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-VGZJsLLthdk/Ts8w6p0u0kI/AAAAAAAADJQ/ctXtbeVrDNs/s1600-h/clip_image001%25255B6%25255D%25255B4%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001[6]" alt="clip_image001[6]" src="http://lh5.ggpht.com/-IbRC1AV7SWk/Ts8w_oOX8bI/AAAAAAAADJY/8lxQYf-cSws/clip_image001%25255B6%25255D_thumb%25255B2%25255D.png?imgmax=800" height="197" width="338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;就是在 Custom Tool 上面加入RazorGenerator，加入後在 cshtml 有任何改變 generated.cs 就會自動再產生一次，設定很簡單，接下來我們就按圖施工新增一個 MailTemplate.cshtml 來試著完成一個需求&lt;/p&gt;MailTemplate.cshtml&lt;br /&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;  border-right-style: none;  overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;@* Generator : Template TypeVisibility : Internal *@&lt;br /&gt;@functions  {&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; dynamic Model { get; set; }&lt;br /&gt;}&lt;br /&gt;Hi! @Model.Name&lt;br /&gt;&lt;br /&gt;非常感謝您申請 @Model.Domain&lt;br /&gt;以下是 @Model.Name 的登入情報。請妥善保管。&lt;br /&gt;(此郵件由自動送信程序發送。)&lt;br /&gt;&lt;br /&gt;郵件地址: @Model.Email&lt;br /&gt;密碼    : @Model.Password&lt;br /&gt;登入URL : http:&lt;span style="color:#008000;"&gt;//@Model.Domain&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-----------------------------&lt;br /&gt;@Model.Domain, inc. http:&lt;span style="color:#008000;"&gt;//@Model.Domain &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;然後在 MailTemplate.cshtml 的 Properties 加入 RazorGenerator 就行了，最後在 Program.cs 上加入&lt;/div&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;  border-right-style: none;  overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;            var mailTemplate = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MailTemplate()&lt;br /&gt;          {&lt;br /&gt;              Model = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; {&lt;br /&gt;                  Name=&lt;span style="color:#006080;"&gt;"Bibby"&lt;/span&gt;,&lt;br /&gt;                  Password=&lt;span style="color:#006080;"&gt;"1234"&lt;/span&gt;,&lt;br /&gt;                  Domain = &lt;span style="color:#006080;"&gt;"Bibby.be"&lt;/span&gt;,&lt;br /&gt;                  Email=&lt;span style="color:#006080;"&gt;"admin@bibby.be"&lt;/span&gt;,&lt;br /&gt;              }&lt;br /&gt;          };&lt;br /&gt;          Console.WriteLine(mailTemplate.TransformText());&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;結果：&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-K2bGs7ksD90/Ts8xBi6I_yI/AAAAAAAADJg/BYAOp8X8u1I/s1600-h/clip_image001%25255B8%25255D%25255B4%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001[8]" alt="clip_image001[8]" src="http://lh6.ggpht.com/-Nn7__fA2qa0/Ts8xD8XjDSI/AAAAAAAADJo/NKwvUh4SQF0/clip_image001%25255B8%25255D_thumb%25255B2%25255D.png?imgmax=800" height="271" width="327" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;這樣就完成我們當初的需求了，收工！不過這方式是有缺點啦，因為要改 cshtml 的時候 generated.cs 會重新產生，這樣對於沒有 visual studio 或是不是 developer 是有問題的，如果有這種需求那要參考我好朋友 Wade的文章 &lt;a href="http://www.dotblogs.com.tw/wadehuang36/archive/2011/08/07/razor-template-engine.aspx" target="_blank"&gt;用Razor語法寫範本-RazorEngine組件介紹&lt;/a&gt; 這種方式，這樣就可以用程式動態去處理，試試看吧！有問題再一起討論吧！&lt;br /&gt;&lt;br /&gt;參考：&lt;a href="http://razorgenerator.codeplex.com/" target="_blank"&gt;&lt;br /&gt;http://razorgenerator.codeplex.com/&lt;/a&gt;&lt;a href="http://haacked.com/archive/2011/08/01/text-templating-using-razor-the-easy-way.aspx" target="_blank"&gt;&lt;br /&gt;http://haacked.com/archive/2011/08/01/text-templating-using-razor-the-easy-way.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-1500941360411071059?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/6NFUD3BG9wE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/1500941360411071059/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=1500941360411071059" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/1500941360411071059?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/1500941360411071059?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/6NFUD3BG9wE/text-templating.html" title="簡單的Text Templating" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-X0eJmr9tq7s/Ts8wupNkxFI/AAAAAAAADIo/Fs3yQEHzNPY/s72-c/clip_image001_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2011/11/text-templating.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYDQng7eSp7ImA9WhRSGEg.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-4177319032888062310</id><published>2011-11-20T00:23:00.004+08:00</published><updated>2011-11-21T14:32:53.601+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-21T14:32:53.601+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>Setting Up Elmah Under SQLite</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IGugxO9PvpjSDAYYmXFF0InMLHI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IGugxO9PvpjSDAYYmXFF0InMLHI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IGugxO9PvpjSDAYYmXFF0InMLHI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IGugxO9PvpjSDAYYmXFF0InMLHI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;之前Bibby都把elmah放在mssql裡面，可是遇到一個問題，如果專案沒有mssql的時候，就得改成xml的方式來做，改成xml來做其實也沒有啥不好，只是龜毛的我不喜歡xml那樣，一天一個xml的，看起來有點礙眼，之前閱讀到elmah的文件，有看過是支援sqlite的，所以乾脆以後都把elmah功能寫到sqlite裡面好了，這樣就不同的專案就可以用相同的解決方法處理了&lt;/p&gt;  &lt;p&gt;不過在套sqlite的時候，其實不是這麼順利，官方文件(wiki)沒有寫的很清楚，花了一會才用成功，在這裡紀錄一下，以後大家參考就不用浪費時間再跟我做一樣的事情了，接下來就看圖說故事..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-k24C3lspDNo/TsfX-dSdh4I/AAAAAAAADHQ/nrB8unso8GA/s1600-h/clip_image001%25255B7%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" alt="clip_image001" src="http://lh4.ggpht.com/-MDFdY3NxGH4/TsfX_DDgiGI/AAAAAAAADHU/GIT41GBZSng/clip_image001_thumb%25255B2%25255D.png?imgmax=800" height="162" border="0" width="310" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;先在Reference上面按右鍵選擇NuGet&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-Jx-ni7mJi74/TsfX_qK1qDI/AAAAAAAADHg/XUFLWmyZlzU/s1600-h/clip_image002%25255B7%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" alt="clip_image002" src="http://lh5.ggpht.com/-IVb3c2sPjMo/TsfYAy0uX4I/AAAAAAAADHk/O2mvqF3GG2I/clip_image002_thumb%25255B2%25255D.png?imgmax=800" height="238" border="0" width="735" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;用搜尋的方式，先把System.Data.SQLite裝上&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-_DcAV0NXOoc/TsfYBQnSMHI/AAAAAAAADHs/_kFe1WyvMsM/s1600-h/clip_image003%25255B5%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image003" alt="clip_image003" src="http://lh3.ggpht.com/-zKsDTjnE804/TsfYCOoPcVI/AAAAAAAADH0/BzDt2S_k2O4/clip_image003_thumb%25255B2%25255D.png?imgmax=800" height="193" border="0" width="702" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;再裝上ELMAH，這樣元件都裝好了，NuGet真的超級方便..讚..&lt;/p&gt;  &lt;p&gt;接下來我們開始設定web.config檔，我們先看一下官方的設定檔好了（這設定檔我的官方網站在鬼打牆，一直找不到）&lt;/p&gt;  &lt;p&gt;  &amp;lt;!-- &lt;br /&gt;          Use to log errors to SQLite using ASP.NET 2.0.&lt;br /&gt;          Set value of connectionStringName attribute to&lt;br /&gt;          the name of the connection string settings to&lt;br /&gt;          use from the &amp;lt;connectionStrings&amp;gt; section.  &lt;br /&gt;      &amp;lt;errorLog type="Elmah.SQLiteErrorLog, Elmah" connectionStringName="..." /&amp;gt;  &lt;br /&gt;          The format of the connection string should be as follows:  &lt;br /&gt;      &amp;lt;connectionStrings&amp;gt;  &lt;br /&gt;        &amp;lt;add name="..." connectionString="data source=[path to the database file]" /&amp;gt;  &lt;br /&gt;      &amp;lt;/connectionStrings&amp;gt;  &lt;br /&gt;          Replace the content of the brackets with a file name, for example:  &lt;br /&gt;      data source=C:\Elmah.db  &lt;br /&gt;          If the database file doesn't exist it is created automatically.  &lt;br /&gt;          To specify a path relative to and below the application root,&lt;br /&gt;          start with the root operator (~) followed by a forward slash (/),&lt;br /&gt;          as it is common in ASP.NET applications. For example:  &lt;br /&gt;      data source=~/App_Data/Error.db  &lt;br /&gt;--&amp;gt;&lt;/p&gt;  &lt;p&gt;上面的設定檔很清楚，所以我們修改web.config就行了&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;  border-right-style: none;  overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;add&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="elmah"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;connectionString&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="data source=~/App_Data/elmah.db"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;elmah&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;errorLog&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Elmah.SQLiteErrorLog, Elmah"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;connectionStringName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="elmah"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;elmah&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;把上面這段加在web.config裡面，這樣就可以使用了，第一次的時候elmah會很貼心的幫你產生出sqlite.db的，這時你就可以用資料庫工具看到資料已經寫入了sqlite&lt;/div&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-VKVEu6qHtso/TsfYC7CQIqI/AAAAAAAADH8/fTRqyojBjYo/s1600-h/clip_image001%25255B4%25255D%25255B4%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001[4]" alt="clip_image001[4]" src="http://lh3.ggpht.com/-l87HVKrtuWM/TsfYDY42LeI/AAAAAAAADII/A1aRExLfdLs/clip_image001%25255B4%25255D_thumb%25255B2%25255D.png?imgmax=800" height="186" border="0" width="720" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;測試一下頁面也沒問題..&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-59usZNge0-A/TsfYEjEK9oI/AAAAAAAADIM/KKy1kgE1sb8/s1600-h/clip_image002%25255B4%25255D%25255B4%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002[4]" alt="clip_image002[4]" src="http://lh5.ggpht.com/-JFkEasVIoPU/TsfYFB2dRkI/AAAAAAAADIU/lRC5-FsihCU/clip_image002%25255B4%25255D_thumb%25255B2%25255D.png?imgmax=800" height="245" border="0" width="787" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;這樣就完成我們的需求了，有問題再討論吧！&lt;/p&gt;參考：&lt;a href="http://code.google.com/p/elmah/w/list" target="_blank"&gt;&lt;br /&gt;http://code.google.com/p/elmah/w/list&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-4177319032888062310?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/Yc6Rd7zz7G0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/4177319032888062310/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=4177319032888062310" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/4177319032888062310?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/4177319032888062310?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/Yc6Rd7zz7G0/bibbyelmahmssqlmssqlxmlxmlxmlxmlelmahsq.html" title="Setting Up Elmah Under SQLite" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-MDFdY3NxGH4/TsfX_DDgiGI/AAAAAAAADHU/GIT41GBZSng/s72-c/clip_image001_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2011/11/bibbyelmahmssqlmssqlxmlxmlxmlxmlelmahsq.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4CSHk5fyp7ImA9WhRSFU0.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-556432331501207035</id><published>2011-11-17T11:25:00.004+08:00</published><updated>2011-11-17T11:36:09.727+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T11:36:09.727+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><title>mvc3 自動加的 client 驗證</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/q2HLgJbP1hwBWKspxj8k-kdNLII/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/q2HLgJbP1hwBWKspxj8k-kdNLII/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/q2HLgJbP1hwBWKspxj8k-kdNLII/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/q2HLgJbP1hwBWKspxj8k-kdNLII/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;日前在處理mvc3 client的驗證問題，發現到如果在型別是int或是decimal等都會自動幫你加入驗證，這一點對Bibby我是蠻困擾的，Bibby驗證都是自己加的，自己來才是王道！下列就是mvc3"假伯"幫我們加的東西..&lt;/p&gt;      &lt;p&gt;自動幫妳加入錯誤訊息&lt;span style="color:#ff0000;"&gt;&lt;br /&gt;The field Money must be a number.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;產生的html code&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;  border-right-style: none;  overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;label&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;for&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Money"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Money&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;label&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;:&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;input&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="input-validation-error text-box single-line"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;data-val&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="true"&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;data-val-number&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="The field Money must be a number."&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;id&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Money"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Money"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="text"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=""&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;span&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="field-validation-error"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;data-valmsg-for&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Money"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;data-valmsg-replace&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="true"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;A value is required.&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;span&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;接下來就是尋找如何解決這ox的問題，找了一下發現原來是ClientDataTypeModelValidatorProvider幫我們加上去的，我們看一下source code&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;  border-right-style: none;  overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#008000;"&gt;/* ****************************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt; * Copyright (c) Microsoft Corporation. All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt; * This software is subject to the Microsoft Public License (Ms-PL). &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt; * A copy of the license can be found in the license.htm file included &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt; * in this distribution.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt; * You must not remove this notice, or any other, from this software.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#008000;"&gt; * ***************************************************************************/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; System.Web.Mvc{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Globalization;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Web.Mvc.Resources;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; ClientDataTypeModelValidatorProvider : ModelValidatorProvider {&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; HashSet&amp;lt;Type&amp;gt; _numericTypes = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; HashSet&amp;lt;Type&amp;gt;(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Type[] {&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;), &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;sbyte&lt;/span&gt;),&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;short&lt;/span&gt;), &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;ushort&lt;/span&gt;),&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;), &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;uint&lt;/span&gt;),&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;long&lt;/span&gt;), &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;ulong&lt;/span&gt;),&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;float&lt;/span&gt;), &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;double&lt;/span&gt;), &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#0000ff;"&gt;decimal&lt;/span&gt;)&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; IEnumerable&amp;lt;ModelValidator&amp;gt; GetValidators(ModelMetadata metadata, ControllerContext context) {&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (metadata == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;) {&lt;br /&gt;       &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span style="color:#006080;"&gt;"metadata"&lt;/span&gt;);&lt;br /&gt;   }&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (context == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;) {&lt;br /&gt;       &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span style="color:#006080;"&gt;"context"&lt;/span&gt;);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; GetValidatorsImpl(metadata, context);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; IEnumerable&amp;lt;ModelValidator&amp;gt; GetValidatorsImpl(ModelMetadata metadata, ControllerContext context) {&lt;br /&gt;   Type type = metadata.ModelType;&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (IsNumericType(type)) {&lt;br /&gt;       &lt;span style="color:#0000ff;"&gt;yield&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; NumericModelValidator(metadata, context);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; IsNumericType(Type type) {&lt;br /&gt;   Type underlyingType = Nullable.GetUnderlyingType(type); &lt;span style="color:#008000;"&gt;// strip off the Nullable&amp;lt;&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; _numericTypes.Contains(underlyingType ?? type);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;sealed&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; NumericModelValidator : ModelValidator {&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; NumericModelValidator(ModelMetadata metadata, ControllerContext controllerContext)&lt;br /&gt;       : &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;(metadata, controllerContext) {&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; IEnumerable&amp;lt;ModelClientValidationRule&amp;gt; GetClientValidationRules() {&lt;br /&gt;       ModelClientValidationRule rule = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ModelClientValidationRule() {&lt;br /&gt;           ValidationType = &lt;span style="color:#006080;"&gt;"number"&lt;/span&gt;,&lt;br /&gt;           ErrorMessage = MakeErrorString(Metadata.GetDisplayName())&lt;br /&gt;       };&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ModelClientValidationRule[] { rule };&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; MakeErrorString(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; displayName) {&lt;br /&gt;       &lt;span style="color:#008000;"&gt;// use CurrentCulture since this message is intended for the site visitor&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; String.Format(CultureInfo.CurrentCulture, MvcResources.ClientDataTypeModelValidatorProvider_FieldMustBeNumeric, displayName);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; IEnumerable&amp;lt;ModelValidationResult&amp;gt; Validate(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; container) {&lt;br /&gt;       &lt;span style="color:#008000;"&gt;// this is not a server-side validator&lt;/span&gt;&lt;br /&gt;       &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; Enumerable.Empty&amp;lt;ModelValidationResult&amp;gt;();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;上面的code很清楚，在"那些"型別，都會幫你加上驗證，所以知道"人是誰殺的"那就閹掉他吧XD..解決方法請在Global.asax裡面加入下段的code&lt;br /&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;  border-right-style: none;  overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;            var cdProvider = ModelValidatorProviders.Providers&lt;br /&gt;        .SingleOrDefault(p =&amp;gt; p.GetType().Equals(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(ClientDataTypeModelValidatorProvider)));&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (cdProvider != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        ModelValidatorProviders.Providers.Remove(cdProvider);&lt;br /&gt;        ModelValidatorProviders.Providers.Add(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; CustomClientDataTypeModelValidatorProvider());&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;用借屍還魂的方式，再新增一個去代替內建的就可以了&lt;/div&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;  border-right-style: none;  overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; CustomClientDataTypeModelValidatorProvider : ModelValidatorProvider&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; IEnumerable&amp;lt;ModelValidator&amp;gt; GetValidators(ModelMetadata metadata, ControllerContext context)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; Enumerable.Empty&amp;lt;ModelValidator&amp;gt;();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;就可以解決了，有問題在一起討論吧！&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;參考：&lt;a href="http://forums.asp.net/t/1512140.aspx/2/10" target="_blank"&gt;&lt;br /&gt;http://forums.asp.net/t/1512140.aspx/2/10&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-556432331501207035?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/1s5u4zY6ndw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/556432331501207035/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=556432331501207035" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/556432331501207035?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/556432331501207035?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/1s5u4zY6ndw/mvc3-clientintdecimalbibbybibbymvc3.html" title="mvc3 自動加的 client 驗證" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2011/11/mvc3-clientintdecimalbibbybibbymvc3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUBRn47cCp7ImA9WhdaEUo.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-570874518942663948</id><published>2011-10-21T13:57:00.007+08:00</published><updated>2011-10-21T14:07:37.008+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-21T14:07:37.008+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>寫支 console application 來更新 svn 的版本號</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HExOMy5o9qAYnor0iTix91dtpNM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HExOMy5o9qAYnor0iTix91dtpNM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HExOMy5o9qAYnor0iTix91dtpNM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HExOMy5o9qAYnor0iTix91dtpNM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;簡介&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;之前有過一篇文章"&lt;a href="http://bibby.be/2010/10/subversion.html"&gt;用 Subversion 來自動更新網站版本和更新時間&lt;/a&gt;"，用來更新網站的版本和更新時間，不過這個方法不算是很好的方法，有兩點原因，一、個是當我要更新版本號的時候，要去修改 web.config的內容，這點對於版本控管的概念來說是不對的，因為修改原因不是因為 web.config 修改而是你需要版本更新而去改，二、是這部份需要靠記憶來記住這件事，如果忘記就不會更新內容，所以花了一點時間想了一個我覺得更好的方法，在這裡來分享個各位&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;說明&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;想法大概是這樣，Bibby 在佈署網站的時候，都會習慣把網站用 Publish 的方式先丟到一個資料夾裡面，然後再去對那資料夾做一些佈署前該做的事，例如測試資料夾要砍掉，Html的layout砍掉等等，所以目標就是寫一隻 console application 來對那個資料夾做事，用程式來代替手工完成佈署前需要做的部份，不過這次範例先 foucs 在更新 svn 的版本號這個動作&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;步驟&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;1.在佈署的網站的 web.config 加入下列的設定檔，加入是為了讓 console 來讀取&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;  border-right-style: none;  overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;appSettings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;add&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="svnPath"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="D:\Projects\URNTW"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;add&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="svnRevision"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="1"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;add&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;key&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="svnDate"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="2011/09/07 03:15:45"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;appSettings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;2.要安裝 &lt;a href="http://tortoisesvn.net/"&gt;TortoiseSVN&lt;/a&gt; ，要用到 TortoiseSVN 的 SubWCRev.exe&lt;/p&gt;&lt;p&gt;3.新增一個 console application 來處理這件事&lt;br /&gt;&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;  border-right-style: none;  overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; TempConsole&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Program&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Main(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;  {&lt;br /&gt;      &lt;span style="color:#008000;"&gt;//塞入要處理的path&lt;/span&gt;&lt;br /&gt;      Helper.BaseFolderPath = args[0];&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#008000;"&gt;//更新版svn本資訊&lt;/span&gt;&lt;br /&gt;      Console.WriteLine(&lt;span style="color:#006080;"&gt;"---------更新版svn本資訊-----------"&lt;/span&gt;);&lt;br /&gt;      SvnUtility su = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; SvnUtility();&lt;br /&gt;      su.ToUpdateSVNVersionAndDate();&lt;br /&gt;      Console.WriteLine(&lt;span style="color:#006080;"&gt;"---------完成-----------"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;      Console.Read();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Helper&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; _BaseFolderPath;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; BaseFolderPath&lt;br /&gt;  {&lt;br /&gt;      get&lt;br /&gt;      {&lt;br /&gt;          &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.IsNullOrEmpty(_BaseFolderPath))&lt;br /&gt;              &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Exception(&lt;span style="color:#006080;"&gt;"BaseFolderPath不許為空值"&lt;/span&gt;);&lt;br /&gt;          &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; _BaseFolderPath;&lt;br /&gt;      }&lt;br /&gt;      set&lt;br /&gt;      {&lt;br /&gt;          _BaseFolderPath = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;;&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; SvnUtility&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#008000;"&gt;/// 更新版svn本資訊&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#008000;"&gt;/// &amp;lt;param name="folderPath"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ToUpdateSVNVersionAndDate()&lt;br /&gt;  {&lt;br /&gt;      var wu = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; WebConfigUtility();&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; sourceFolderPath = wu.GetWebConfigSettingValue(&lt;span style="color:#006080;"&gt;"svnPath"&lt;/span&gt;);&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; svnFile = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;@"{0}\{1}.txt"&lt;/span&gt;&lt;br /&gt;          , Helper.BaseFolderPath, Guid.NewGuid().ToString(&lt;span style="color:#006080;"&gt;"N"&lt;/span&gt;));&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (var stream = File.Create(svnFile))&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; (StreamWriter sw = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StreamWriter(stream))&lt;br /&gt;      {&lt;br /&gt;          &lt;span style="color:#008000;"&gt;//參考http://bluecat.csie.net/2010/07/13/5105/&lt;/span&gt;&lt;br /&gt;          sw.WriteLine(&lt;span style="color:#006080;"&gt;"$WCREV$"&lt;/span&gt;);&lt;br /&gt;          sw.WriteLine(&lt;span style="color:#006080;"&gt;"$WCDATE$"&lt;/span&gt;);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; consoleArgs = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;@"{0} {1} {1}"&lt;/span&gt;, sourceFolderPath, svnFile);&lt;br /&gt;      CallConsoleWordApp(&lt;span style="color:#006080;"&gt;@"SubWCRev.exe"&lt;/span&gt;, consoleArgs, () =&amp;gt;&lt;br /&gt;      {&lt;br /&gt;          var svnInfo = File.ReadAllLines(svnFile);&lt;br /&gt;          File.Delete(svnFile);&lt;br /&gt;&lt;br /&gt;          wu.SetWebConfigSettingValue(&lt;span style="color:#006080;"&gt;"svnRevision"&lt;/span&gt;, svnInfo[0]);&lt;br /&gt;          wu.SetWebConfigSettingValue(&lt;span style="color:#006080;"&gt;"svnDate"&lt;/span&gt;, svnInfo[1]);&lt;br /&gt;          Console.WriteLine(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Concat(&lt;span style="color:#006080;"&gt;"處理"&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Concat(Helper.BaseFolderPath, &lt;span style="color:#006080;"&gt;@"\Web.config"&lt;/span&gt;)));&lt;br /&gt;      });&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#008000;"&gt;/// 呼叫 產生 Word 的程式&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#008000;"&gt;/// &amp;lt;param name="appPath"&amp;gt;被呼叫的程式路徑&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#008000;"&gt;/// &amp;lt;param name="parameter"&amp;gt;參數,c:/test.exe aa bb cc&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; CallConsoleWordApp(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; appPath, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; parameter, Action fun)&lt;br /&gt;  {&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; wait = 3000;&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#008000;"&gt;//BMK 呼叫 產生Word 的程式&lt;/span&gt;&lt;br /&gt;      var startInfo = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ProcessStartInfo(appPath, parameter)&lt;br /&gt;      {&lt;br /&gt;          WindowStyle = ProcessWindowStyle.Hidden&lt;br /&gt;      };&lt;br /&gt;&lt;br /&gt;      var process = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Process&lt;br /&gt;      {&lt;br /&gt;          StartInfo = startInfo&lt;br /&gt;      };&lt;br /&gt;      process.Start();&lt;br /&gt;      process.WaitForExit(wait);&lt;span style="color:#008000;"&gt;//程式等三秒沒執行就跳出&lt;/span&gt;&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; IsGet = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;while&lt;/span&gt; (IsGet)&lt;br /&gt;      {&lt;br /&gt;          &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (process.HasExited)&lt;br /&gt;          {&lt;br /&gt;              fun.Invoke();&lt;br /&gt;              IsGet = &lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;;&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; WebConfigUtility&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; configFile;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; WebConfigUtility()&lt;br /&gt;  {&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.configFile = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Concat(Helper.BaseFolderPath, &lt;span style="color:#006080;"&gt;@"\Web.config"&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; SetWebConfigSettingValue(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; key, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;)&lt;br /&gt;  {&lt;br /&gt;      var root = XElement.Load(configFile);&lt;br /&gt;      var settings = root.Element(&lt;span style="color:#006080;"&gt;"appSettings"&lt;/span&gt;).Elements(&lt;span style="color:#006080;"&gt;"add"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;br /&gt;      {&lt;br /&gt;          settings.First(a =&amp;gt; a.Attribute(&lt;span style="color:#006080;"&gt;"key"&lt;/span&gt;).Value == key)&lt;br /&gt;                      .Attribute(&lt;span style="color:#006080;"&gt;"value"&lt;/span&gt;).Value = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;;&lt;br /&gt;          root.Save(configFile);&lt;br /&gt;      }&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt;&lt;br /&gt;      {&lt;br /&gt;          &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Exception(&lt;span style="color:#006080;"&gt;"沒有這個item"&lt;/span&gt;);&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; GetWebConfigSettingValue(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; key)&lt;br /&gt;  {&lt;br /&gt;      var root = XElement.Load(configFile);&lt;br /&gt;      var settings = root.Element(&lt;span style="color:#006080;"&gt;"appSettings"&lt;/span&gt;).Elements(&lt;span style="color:#006080;"&gt;"add"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;br /&gt;      {&lt;br /&gt;          &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; settings.First(a =&amp;gt; a.Attribute(&lt;span style="color:#006080;"&gt;"key"&lt;/span&gt;).Value == key)&lt;br /&gt;                          .Attribute(&lt;span style="color:#006080;"&gt;"value"&lt;/span&gt;).Value;&lt;br /&gt;      }&lt;br /&gt;      &lt;span style="color:#0000ff;"&gt;catch&lt;/span&gt;&lt;br /&gt;      {&lt;br /&gt;          &lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Exception(&lt;span style="color:#006080;"&gt;"沒有這個item"&lt;/span&gt;);&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;4.下載 &lt;a href="http://dengdun.webs.com/" target="_blank"&gt;Open++&lt;/a&gt; 這軟體來呼叫 console application&lt;br /&gt;&lt;br /&gt;先大概簡介一下，這個程式是用來修改滑鼠右鍵 menu 的，Bibby會用這隻程式是因為有三個原因，一、很直覺，有簡潔易懂的界面可以用，二、可以分組，這功能很重要幫助分類，三、免費又免安裝，基於這三點，不用怎麼可以，Bibby知道也可以去編輯 regedit 檔案來達成這個效果，不過基於懶又不想研究太深入的關係，就拿人家寫好的軟體來用就對了！接下來就是簡單的使用流程，看圖說故事摟..&lt;br /&gt;&lt;br /&gt;開起解壓縮後的資料夾，執行程式&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-qd85FHk_zQQ/TqEJuTMWIeI/AAAAAAAADFM/oA7f59MunTA/s1600-h/clip_image001%25255B4%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" alt="clip_image001" src="http://lh3.ggpht.com/-MP0-ScjPPh4/TqEJu6Kiu5I/AAAAAAAADFU/iD_UMk0Yp90/clip_image001_thumb%25255B1%25255D.png?imgmax=800" border="0" height="180" width="237" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;新增按鈕，選擇 Command&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-Mw-chr8KUDc/TqEJvfuE-kI/AAAAAAAADFc/5JSUTdf9Ptw/s1600-h/clip_image002%25255B5%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" alt="clip_image002" src="http://lh5.ggpht.com/-zl85DKeUPjU/TqEJvgAV4JI/AAAAAAAADFk/JZgWOW8CsiI/clip_image002_thumb%25255B2%25255D.png?imgmax=800" border="0" height="499" width="625" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;1.新增Command的名稱&lt;br /&gt;2.這個Command的位置&lt;br /&gt;3.執行程式會帶入的參數名稱，這很重要，因為我們就是要對這個資料夾來處理&lt;br /&gt;4.這個Command的內容只出現單一資料夾的狀態下&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-LAhRe7PoTc0/TqEJwFpt0aI/AAAAAAAADFs/wjNhmnvoitg/s1600-h/clip_image003%25255B5%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image003" alt="clip_image003" src="http://lh4.ggpht.com/-DQ_njyrGE70/TqEJwheMQGI/AAAAAAAADF0/sdF-7En9MsM/clip_image003_thumb%25255B2%25255D.png?imgmax=800" border="0" height="512" width="486" /&gt;&lt;/a&gt;&lt;/p&gt;1.增加按鈕&lt;br /&gt;2.增加分割線，這是為了要分組用的&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-FrNjc0WS0lw/TqEJwzETS7I/AAAAAAAADF8/4UWVHslZxKE/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" alt="image" src="http://lh4.ggpht.com/-8bR9xrbIXEQ/TqEJxT0FxkI/AAAAAAAADGE/acptA-50Zow/image_thumb%25255B2%25255D.png?imgmax=800" border="0" height="496" width="637" /&gt;&lt;/a&gt; &lt;/p&gt;1.新增好內容後，要來安裝這個程式，這樣滑鼠右鍵才會出現，如果有一天您不想要這個程式，只要用uninstall這個內容就可以了&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-1ZWHRZaypiY/TqEJx__O2kI/AAAAAAAADGM/99JyRGtxPRo/s1600-h/clip_image005%25255B5%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image005" alt="clip_image005" src="http://lh5.ggpht.com/-ATbOunn_7EE/TqEJyCOL8gI/AAAAAAAADGU/lDjTBAmSqG8/clip_image005_thumb%25255B2%25255D.png?imgmax=800" border="0" height="512" width="486" /&gt;&lt;/a&gt;&lt;/p&gt;1.在資料夾上點滑鼠右鍵，就可以看到 TempConsole 這個我們剛剛新增的 Command 了&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/--aCEZufoBP8/TqEJytkb94I/AAAAAAAADGc/CVLZ-BoHchU/s1600-h/clip_image006%25255B5%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image006" alt="clip_image006" src="http://lh4.ggpht.com/-QjWgLO5ENRU/TqEJzIl6TMI/AAAAAAAADGk/jLJXpzDtJq4/clip_image006_thumb%25255B2%25255D.png?imgmax=800" border="0" height="209" width="564" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;結果&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;我們就可以在web.config裡面看到修改了&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-YXVp9RaXT0A/TqEJznYY1RI/AAAAAAAADGs/2nPP9F-H7aw/s1600-h/clip_image007%25255B5%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image007" alt="clip_image007" src="http://lh4.ggpht.com/-UevqAkia3rY/TqEJ0acRk0I/AAAAAAAADG0/RMkHHSU11MQ/clip_image007_thumb%25255B2%25255D.png?imgmax=800" border="0" height="37" width="435" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;總結&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;這個作法比&lt;a href="http://bibby.be/2010/10/subversion.html" target="_blank"&gt;之前&lt;/a&gt;的作法好很多，在進階一點，我們可以把佈署前想要做的事情都放在這支 console application 來處理，例如：刪除一些不要的檔案，加密一些設定檔，壓縮整個要佈署的資料夾等等，這些內容實作都不難，寫好了就可以用很久很久，身為程式設計師的我們，就是要想些有的沒有的來讓世界變得更好，如果大家對於此作法有任何的意見，留言一起討論吧！&lt;/p&gt;&lt;p&gt;&lt;strong&gt;參考&lt;/strong&gt;&lt;a href="http://dengdun.webs.com/"&gt;&lt;br /&gt;http://bluecat.csie.net/2010/07/13/5105/&lt;br /&gt;http://dengdun.webs.com/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-570874518942663948?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/sHg1r69n7ys" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/570874518942663948/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=570874518942663948" title="1 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/570874518942663948?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/570874518942663948?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/sHg1r69n7ys/consolesvn.html" title="寫支 console application 來更新 svn 的版本號" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-MP0-ScjPPh4/TqEJu6Kiu5I/AAAAAAAADFU/iD_UMk0Yp90/s72-c/clip_image001_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://bibby.be/2011/10/consolesvn.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcESH8_eCp7ImA9WhZWFkU.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-6135953859995946619</id><published>2011-05-18T00:26:00.004+08:00</published><updated>2011-05-18T08:53:29.140+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-18T08:53:29.140+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Silverlight 的初始值</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PkvtiFCcbHkOSFdByswJp5g1BN8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PkvtiFCcbHkOSFdByswJp5g1BN8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PkvtiFCcbHkOSFdByswJp5g1BN8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PkvtiFCcbHkOSFdByswJp5g1BN8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;最近在學習 Silverlight，這裡紀錄一下在寫 Silverlight 時，會常常用到的技巧。我們初始程式時，經常都會給程式初始值，那 Silverlight 要如何給初始值呢?有兩種方法，一是用 QueryString，這方式在寫網頁的時候一定常用，二是可以設定放置在 Silverlight 的 Html 的參數，有點模糊吧！我們直接看code..&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;第一種方法 QueryString&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://localhost:2418/?qs1=123&amp;amp;qs2=456&amp;amp;qs3=789"&gt;http://localhost:2418/?qs1=123&amp;amp;qs2=456&amp;amp;qs3=789&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;xaml&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;StackPanel&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="LayoutRoot"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Background&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="White"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="tbInitValue"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;TextWrapping&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Wrap"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="InitValue:"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Foreground&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Red"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;     &lt;br /&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;StackPanel&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="stInitValue"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Left"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="8,0,0,0"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="tbQueryString"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;TextWrapping&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Wrap"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="QueryString:"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Foreground&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Red"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;StackPanel&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;x:Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="stQueryString"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Left"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="8,0,0,0"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;.cs&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;partial&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; InitValue : UserControl&lt;br /&gt;{&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; InitValue()&lt;br /&gt; {&lt;br /&gt;     InitializeComponent();&lt;br /&gt;&lt;br /&gt;     &lt;span style="color:#008000;"&gt;//QueryString&lt;/span&gt;&lt;br /&gt;     var qs = HtmlPage.Document.QueryString;&lt;br /&gt;     &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (var key &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; qs.Keys)&lt;br /&gt;     {&lt;br /&gt;         TextBlock tb = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; TextBlock();&lt;br /&gt;         tb.Text = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;"{0}:{1}"&lt;/span&gt;, key, qs[key]);&lt;br /&gt;         stQueryString.Children.Add(tb);&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;第二種方法 InitParams&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;.App.xaml.cs&lt;/div&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Application_Startup(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; sender, StartupEventArgs e)&lt;br /&gt;{&lt;br /&gt; var obj = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; InitValue.InitValue();&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.RootVisual = obj;&lt;br /&gt; &lt;span style="color:#008000;"&gt;//InitParams&lt;/span&gt;&lt;br /&gt; &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (var key &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; e.InitParams.Keys)&lt;br /&gt; {&lt;br /&gt;     TextBlock tb = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; TextBlock();&lt;br /&gt;     tb.Text = &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#006080;"&gt;"{0}:{1}"&lt;/span&gt;,key, e.InitParams[key]);&lt;br /&gt;     obj.stInitValue.Children.Add(tb);&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;.html&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;pre    style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  direction: ltr; border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:'Courier New', courier, monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;object&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;data&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="data:application/x-silverlight-2,"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="application/x-silverlight-2"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;width&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="100%"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;height&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="100%"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;param&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="source"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="/ClientBin/SilverlightApplication1.xap"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;param&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="onError"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="onSilverlightError"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;param&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="onError"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="onSilverlightError"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;param&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="background"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="silver"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;param&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="minRuntimeVersion"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="3.0.40818.0"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;param&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="autoUpgrade"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="true"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;param&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="enableHtmlAccess"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="true"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;param&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="initParams"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="initp1=a987,initp2=b654,initp3=c321"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;param&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="windowless"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;value&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="false"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;a&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;href&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="http://go.microsoft.com/fwlink/?LinkID=149156&amp;amp;amp;v=3.0.40818.0"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;style&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="text-decoration: none;"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;img&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;src&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="http://go.microsoft.com/fwlink/?LinkId=108181"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;alt&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Get Microsoft Silverlight"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;style&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="border-style: none;"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;a&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;object&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;結果：&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TdKht7EqJ4I/AAAAAAAADCw/x9V1-ynVB68/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" alt="image" src="http://lh5.ggpht.com/_8qQpVjicx4A/TdKhuhPYcRI/AAAAAAAADC0/wsNJuC0-rPo/image_thumb%5B2%5D.png?imgmax=800" width="407" border="0" height="210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這裡做個簡單的說明，用 InitParams 的時候需要在 App.xmal.cs 裡面處理，在用 QueryString 需要在 xmal.cs 裡面處理，這兩個的差別要注意一下，有問題再一起討論吧！！&lt;br /&gt;&lt;br /&gt;參考：&lt;br /&gt;&lt;a href="http://www.switchonthecode.com/tutorials/silverlight-2-using-initparams" target="_blank"&gt;http://www.switchonthecode.com/tutorials/silverlight-2-using-initparams&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-6135953859995946619?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/w6FP409hSVs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/6135953859995946619/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=6135953859995946619" title="1 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/6135953859995946619?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/6135953859995946619?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/w6FP409hSVs/silverlight.html" title="Silverlight 的初始值" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_8qQpVjicx4A/TdKhuhPYcRI/AAAAAAAADC0/wsNJuC0-rPo/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://bibby.be/2011/05/silverlight.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8FSX85eCp7ImA9WhZXFkw.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-1497649615271816561</id><published>2011-05-06T02:06:00.001+08:00</published><updated>2011-05-06T02:06:58.120+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-06T02:06:58.120+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="亂七八糟" /><title>(敗家文)Synology DS410 + WD2TB x3 合體</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2XLUcFKWaILVO220u-zi37lU4t0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2XLUcFKWaILVO220u-zi37lU4t0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2XLUcFKWaILVO220u-zi37lU4t0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2XLUcFKWaILVO220u-zi37lU4t0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;上個月月底的某一天的晚上，看著 nba 精彩刺激的季後賽，忽然聽到 server 上的硬碟咖啦咖啦響，心想完蛋了，硬碟不會葛屁了吧！馬上遠端連去 server 看看，喵低，果然進不去了..案，之後拔出來用一堆有的沒有的方法（搖一搖它..摸一摸它..拜一拜插根香..還有人叫用電擊的方式XD）看會不會活起來，不過都沒有成功，唉唉唉..一整個很鬱悶..&lt;/p&gt;  &lt;p&gt;話說遇到了還是遇到了，還是要想個辦法解決，我不要再出現硬碟掛了只能偷哭得窘境，探聽了一下搜尋的一下..就敗了下列的東西..&amp;gt;&amp;lt;||..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TcLnFsuJH8I/AAAAAAAADBw/G2_Ea5HcZXo/s1600-h/image%5B5%5D.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://lh4.ggpht.com/_8qQpVjicx4A/TcLnGMHFfvI/AAAAAAAADB0/etUwkyLQ538/image_thumb%5B3%5D.png?imgmax=800" width="650" height="188" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;很快的，早上訂貨下午箱子就會出現在你家裡（這樣消費真的有快感XD）&lt;/p&gt;  &lt;p&gt;先看盒子照..&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TcLnG4OmZiI/AAAAAAAADB4/fkBuKQgmZ5Y/s1600-h/P1090061%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="P1090061" border="0" alt="P1090061" src="http://lh4.ggpht.com/_8qQpVjicx4A/TcLnH6lKylI/AAAAAAAADB8/X_OkQPcY4js/P1090061_thumb%5B2%5D.jpg?imgmax=800" width="480" height="640" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;脫掉衣服，感覺還蠻素雅的&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TcLnIXBMc-I/AAAAAAAADCA/7K3X6yKMizc/s1600-h/P1090063%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="P1090063" border="0" alt="P1090063" src="http://lh5.ggpht.com/_8qQpVjicx4A/TcLnJMWGRyI/AAAAAAAADCE/oxwhnwnNQ2U/P1090063_thumb%5B2%5D.jpg?imgmax=800" width="640" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;大食怪的 2TB 硬碟的近照..威..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TcLnJ9Dk3HI/AAAAAAAADCI/_JXUuMH0vIA/s1600-h/P1090064%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="P1090064" border="0" alt="P1090064" src="http://lh3.ggpht.com/_8qQpVjicx4A/TcLnKmzC1GI/AAAAAAAADCM/MRr76O-2O5o/P1090064_thumb%5B2%5D.jpg?imgmax=800" width="640" height="480" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;看一下內裝..未放硬碟..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TcLnLGfFcoI/AAAAAAAADCQ/mapQoDjDDDM/s1600-h/P1090067%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="P1090067" border="0" alt="P1090067" src="http://lh3.ggpht.com/_8qQpVjicx4A/TcLnMEeU2uI/AAAAAAAADCU/sdAmYjWf8-8/P1090067_thumb%5B2%5D.jpg?imgmax=800" width="480" height="640" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;全部塞進去就對了，合體!!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TcLnMtYcvGI/AAAAAAAADCY/GXCJ4_6nI3k/s1600-h/P1090069%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="P1090069" border="0" alt="P1090069" src="http://lh4.ggpht.com/_8qQpVjicx4A/TcLnNq_PonI/AAAAAAAADCc/HY-Rz5W7Uz4/P1090069_thumb%5B2%5D.jpg?imgmax=800" width="480" height="640" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;開始工作照..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TcLnOat7S7I/AAAAAAAADCg/tLKrfTGk65g/s1600-h/P1090072%5B4%5D.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="P1090072" border="0" alt="P1090072" src="http://lh6.ggpht.com/_8qQpVjicx4A/TcLnO_7QwpI/AAAAAAAADCk/Ms2tJoyBk18/P1090072_thumb%5B2%5D.jpg?imgmax=800" width="480" height="640" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;看一下合體起來的軟體畫面..&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TcLnPr59OII/AAAAAAAADCo/qmjnUmfrT5k/s1600-h/image%5B10%5D.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://lh6.ggpht.com/_8qQpVjicx4A/TcLnQcq6sTI/AAAAAAAADCs/LXtpTzq3qDg/image_thumb%5B6%5D.png?imgmax=800" width="653" height="294" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;貼完啦大概是這樣，軟體的操作界面還蠻直白的很容易懂，說明書很多很多頁很詳細，等下次用到有心得再上來報告，先把資料備份安全的部份處理好，讓硬碟死掉的惡夢在我生活中消失，這就是花錢當凱子的好處，哈，如果有人有跟我一樣的顧慮，怕哪天硬碟死了自己也會哭死的，可以考慮一下衝下去，別想太多..^___^&lt;/p&gt;  &lt;p&gt;參考：    &lt;br /&gt;&lt;a title="http://www.synology.com/cht/index.php" href="http://www.synology.com/cht/index.php"&gt;http://www.synology.com/cht/index.php&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-1497649615271816561?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/l4WPXgUJ-ww" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/1497649615271816561/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=1497649615271816561" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/1497649615271816561?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/1497649615271816561?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/l4WPXgUJ-ww/synology-ds410-wd2tb-x3.html" title="(敗家文)Synology DS410 + WD2TB x3 合體" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_8qQpVjicx4A/TcLnGMHFfvI/AAAAAAAADB0/etUwkyLQ538/s72-c/image_thumb%5B3%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2011/05/synology-ds410-wd2tb-x3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMBSH88eSp7ImA9Wx9UEUk.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-9031720038847125775</id><published>2011-02-08T10:07:00.005+08:00</published><updated>2011-02-08T13:54:19.171+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-08T13:54:19.171+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>時區 (TimeZones) 的下拉選單</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Aco9KxRt_c8h66DRUDiTsBHVp3o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Aco9KxRt_c8h66DRUDiTsBHVp3o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Aco9KxRt_c8h66DRUDiTsBHVp3o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Aco9KxRt_c8h66DRUDiTsBHVp3o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;常在註冊一些論壇或是網站的時候，都會看到您目前屬於那一個時區的下拉式選單，如果這功能用 .net 要如何做呢？&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TVClTjv3AKI/AAAAAAAADBU/jNAKI3fzASI/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-width: 0px; display: inline;" title="image" alt="image" src="http://lh4.ggpht.com/_8qQpVjicx4A/TVClU-u8imI/AAAAAAAADBY/8DJCoWVTjkE/image_thumb%5B2%5D.png?imgmax=800" border="0" height="174" width="445" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;在之前的方法都是寫死的，需要用就去網路查一下資料，到底有哪些時區可以選，這個東西通常都是寫好包起來，等有需要在拿出來使用，還有也要寫一下由使用者時區來顯示當地時間的 method，其實不算難寫，只是有點麻煩，不過微軟佛心來了，幫我們把這個東西整理好了，讓我們不用花心思在這個沒啥營養的東西，先看 Code 吧！&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;ReadOnlyCollection&amp;lt;TimeZoneInfo&amp;gt; tzi = TimeZoneInfo.GetSystemTimeZones();&lt;br /&gt;DateTime dt = DateTime.Now;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;(var item &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; tzi)&lt;br /&gt;{&lt;br /&gt;var t = TimeZoneInfo&lt;br /&gt;.ConvertTimeBySystemTimeZoneId(dt,TimeZoneInfo.Local.Id,item.Id);&lt;br /&gt;var display = &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;.Concat(t,&lt;span style="color: rgb(0, 96, 128);"&gt;" ==&amp;gt; "&lt;/span&gt;,item.DisplayName);&lt;br /&gt;Console.WriteLine(display);&lt;br /&gt;}    &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TVClV3MyZyI/AAAAAAAADBc/UDiEu4Lf5MY/s1600-h/image%5B10%5D.png"&gt;&lt;img style="border-width: 0px; display: inline;" title="image" alt="image" src="http://lh4.ggpht.com/_8qQpVjicx4A/TVClXZgSItI/AAAAAAAADBg/sjn0pUx52a8/image_thumb%5B6%5D.png?imgmax=800" border="0" height="248" width="573" /&gt;&lt;/a&gt;&lt;p&gt; &lt;/p&gt;上面這段 Code Snippet 我是把當地的時間還有時區印出來，如果在 dropdownlist 需要用的話，下列這樣寫法就可以了&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;ReadOnlyCollection&amp;lt;TimeZoneInfo&amp;gt; tzi = TimeZoneInfo.GetSystemTimeZones();&lt;br /&gt;DateTime dt = DateTime.Now;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var timeZone &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; tzi)&lt;br /&gt;{&lt;br /&gt;ddlTimeZone.Items.Add(&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; ListItem(timeZone.DisplayName, timeZone.Id));           &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;參考：&lt;br /&gt;&lt;a title="http://msdn.microsoft.com/zh-tw/library/system.timezoneinfo.getsystemtimezones.aspx" href="http://msdn.microsoft.com/zh-tw/library/system.timezoneinfo.getsystemtimezones.aspx"&gt;http://msdn.microsoft.com/zh-tw/library/system.timezoneinfo.getsystemtimezones.aspx&lt;br /&gt;http://www.dotnetcurry.com/ShowArticle.aspx?ID=593&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-9031720038847125775?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/q7bZxbL4zY4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/9031720038847125775/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=9031720038847125775" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/9031720038847125775?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/9031720038847125775?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/q7bZxbL4zY4/timezones.html" title="時區 (TimeZones) 的下拉選單" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_8qQpVjicx4A/TVClU-u8imI/AAAAAAAADBY/8DJCoWVTjkE/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2011/02/timezones.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IMR389eCp7ImA9Wx9VEUo.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-7686215278151756162</id><published>2011-01-27T17:49:00.002+08:00</published><updated>2011-01-28T08:46:26.160+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-28T08:46:26.160+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="軟體試用" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>.NET library for the Google Data API</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XPem0LiaSxQYJfbhE_Hy41puBQY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XPem0LiaSxQYJfbhE_Hy41puBQY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XPem0LiaSxQYJfbhE_Hy41puBQY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XPem0LiaSxQYJfbhE_Hy41puBQY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;今天在逛網路的時候，發現到 &lt;a href="http://code.google.com/p/google-gdata/" target="_blank"&gt;.NET library for the Google Data API&lt;/a&gt; 這專案，提供的 service 如下&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Each of the following Google services provides a Google data API: &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;Base &lt;/li&gt;      &lt;li&gt;Blogger &lt;/li&gt;      &lt;li&gt;Calendar &lt;/li&gt;      &lt;li&gt;Spreadsheets &lt;/li&gt;      &lt;li&gt;Google Apps Provisioning &lt;/li&gt;      &lt;li&gt;Code Search &lt;/li&gt;      &lt;li&gt;Notebook &lt;/li&gt;      &lt;li&gt;Picasa Web Albums &lt;/li&gt;      &lt;li&gt;Document Feed &lt;/li&gt;      &lt;li&gt;Contacts &lt;/li&gt;      &lt;li&gt;You Tube &lt;/li&gt;      &lt;li&gt;Google Health &lt;/li&gt;      &lt;li&gt;Google Analytics &lt;/li&gt;      &lt;li&gt;Google Webmaster Tools &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;哇，這些功能之前要使用的時候，就必須刻苦去讀 google 的 api document 然後組出 querystring 或是 javascript 的方式處理，現在有很方便的 dll 可以 reference ，當然二話不說，先把專案載下來看看..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TUE_srPoEsI/AAAAAAAADAw/kJwHueMjnj8/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-width: 0px; display: inline;" title="image" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TUE_t0KpscI/AAAAAAAADA0/6Y1ibDutWzk/image_thumb%5B2%5D.png?imgmax=800" border="0" height="525" width="264" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;專案還蠻多的，進入每個專案就可以看到各個功能的 sample code，有了 sample code 不看 document 也可以無腦使用了，不過要使用還是 &lt;a href="http://google-gdata.googlecode.com/svn/docs/index.html" target="_blank"&gt;線上 document&lt;/a&gt; 還是看一看才是真的！&lt;/p&gt;  &lt;p&gt;現在，來試來跑一下 Calendar 專案，先設定 StartUp Project 然後按 F5 程式就出現了，依上面的內容填入帳號密碼..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TUE_u71k13I/AAAAAAAADA4/FSnUXoK5ePQ/s1600-h/SNAGHTML1f3c1e1%5B5%5D.png"&gt;&lt;img style="border-width: 0px; display: inline;" title="SNAGHTML1f3c1e1" alt="SNAGHTML1f3c1e1" src="http://lh3.ggpht.com/_8qQpVjicx4A/TUE_wDFdYxI/AAAAAAAADA8/B-knWXLx124/SNAGHTML1f3c1e1_thumb%5B2%5D.png?imgmax=800" border="0" height="381" width="608" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;內容就出現啦，一整個方便，好物好物!!&lt;/p&gt;  &lt;p&gt;goolge 服務很輕鬆的無縫整合到 .net，不過當東西越來越方便呼叫越來越簡單後，我們就是不是該想想，作為工程師的價值在哪呢？&lt;/p&gt;  &lt;p&gt;參考：  &lt;br /&gt;&lt;a title="http://code.google.com/p/google-gdata/" href="http://code.google.com/p/google-gdata/" target="_blank"&gt;http://code.google.com/p/google-gdata/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-7686215278151756162?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/vW2b7CvOOcg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/7686215278151756162/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=7686215278151756162" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/7686215278151756162?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/7686215278151756162?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/vW2b7CvOOcg/net-library-for-google-data-api_27.html" title=".NET library for the Google Data API" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_8qQpVjicx4A/TUE_t0KpscI/AAAAAAAADA0/6Y1ibDutWzk/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2011/01/net-library-for-google-data-api_27.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEFQ3s9eyp7ImA9Wx9XGUo.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-6331302472041151253</id><published>2011-01-14T10:10:00.003+08:00</published><updated>2011-01-14T10:53:32.563+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-14T10:53:32.563+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><title>如何用 jQuery 去判斷檔案存不存在</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/G_ebRHJQ0UvCQGNm-W0wcZH4PHk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G_ebRHJQ0UvCQGNm-W0wcZH4PHk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/G_ebRHJQ0UvCQGNm-W0wcZH4PHk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G_ebRHJQ0UvCQGNm-W0wcZH4PHk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;最近好忙阿，趕羚羊的忙，Blog 草都有 180 了，心裡有個聲音，你再這樣墮落下去就去&lt;span style="font-weight: bold;"&gt;會被嫌棄的&lt;/span&gt;!! 所以新的年度，還是要重新開始，套一句常常聽到的話'"&lt;span style="color: rgb(0, 0, 255);"&gt;時間就像女人的乳溝，擠一擠還是有&lt;/span&gt;”，所以要寫文要寫文要寫文！！&lt;/p&gt;  &lt;p&gt;喇賽的事情不多說了，今天要分享一下最近學到的東西，就是&lt;strong&gt;如何用 jQuery 去判斷檔案存不存在&lt;/strong&gt;，這個問題對於網頁工作者非常有用，舉一個例子，例如一個購物網，一定會有產品列表頁，頁面上的產品圖片如果後台的維護人員還沒有上圖，這頁面上的產品我們會希望給它一個預設的圖，等候台上好圖後，圖片就恢復成該圖片自己的圖，像這種功能，用這方式做就很簡單輕鬆好自在！！我們直接看 code 吧！&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt; IsFileExist(filePath){&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;var&lt;/span&gt; bo = &lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;;&lt;br /&gt;$.ajax({&lt;br /&gt;    url:filePath,&lt;br /&gt;    type:&lt;span style="color: rgb(0, 96, 128);"&gt;'HEAD'&lt;/span&gt;,&lt;br /&gt;    async:&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;,&lt;br /&gt;    success:&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;(){&lt;br /&gt;        bo = &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;;&lt;br /&gt;    },&lt;br /&gt;    error:&lt;span style="color: rgb(0, 0, 255);"&gt;function&lt;/span&gt;(){&lt;br /&gt;        bo = &lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;});&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; bo;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;上面這個 filePath 是指檔案在 Server 端的路徑，還有注意我有加一個 async:false 的參數，這是說，&lt;strong&gt;不要執行非同步，&lt;/strong&gt;簡單的來說就是會等結果出來才會傳回 true/false..&lt;br /&gt;&lt;br /&gt;參考：&lt;a title="http://www.ambitionlab.com/how-to-check-if-a-file-exists-using-jquery-2010-01-06" href="http://www.ambitionlab.com/how-to-check-if-a-file-exists-using-jquery-2010-01-06" target="_blank"&gt;&lt;br /&gt;http://www.ambitionlab.com/how-to-check-if-a-file-exists-using-jquery-2010-01-06&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;2011/01/12更新&lt;/span&gt;&lt;br /&gt;好友demo有建議，如果是&lt;span style="font-weight: bold;"&gt;圖&lt;/span&gt;的話&lt;code class="html color1"&gt; &lt;span style="font-weight: bold;"&gt;onerror&lt;/span&gt;&lt;/code&gt;&lt;code class="html plain"&gt;&lt;/code&gt; 這個 tag 來處理掉比較好，詳情可以看他的&lt;a href="http://demo.tc/Post/285" target="_blank"&gt;文章&lt;/a&gt;..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-6331302472041151253?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/tzSehqDy81g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/6331302472041151253/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=6331302472041151253" title="2 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/6331302472041151253?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/6331302472041151253?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/tzSehqDy81g/jquery.html" title="如何用 jQuery 去判斷檔案存不存在" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://bibby.be/2011/01/jquery.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cGR3o6fSp7ImA9Wx5bEko.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-434418883932396406</id><published>2010-10-28T21:02:00.002+08:00</published><updated>2010-10-28T21:03:46.415+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-28T21:03:46.415+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title>ASP.NET RSS Toolkit 的使用方法（字串輸出）</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/R4ZWKeiwrRGTYk7ARe7n0-yrDys/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R4ZWKeiwrRGTYk7ARe7n0-yrDys/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/R4ZWKeiwrRGTYk7ARe7n0-yrDys/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R4ZWKeiwrRGTYk7ARe7n0-yrDys/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;今天在處理有關 RSS 的需求，一直以來我遇到 RSS 都會用 &lt;a href="http://aspnetrsstoolkit.codeplex.com/" target="_blank"&gt;ASP.NET RSS Toolkit&lt;/a&gt; 的這個人家開發好的 Project 來使用，他的使用方式也很簡單，你可以參考我的好友 &lt;a href="http://demo.tc/" target="_blank"&gt;demo&lt;/a&gt; 寫的 &lt;a href="http://demo.tc/Post/446" target="_blank"&gt;ASP.NET RSS Toolkit快速滿足你對於RSS的需求&lt;/a&gt; 的文章就可以了，不過我還是嫌使用方式還是有點小麻煩，所以參考了一下 source code，直接把 Rss 內容用字串的方式 Render 出來，直接看 code 吧！！&lt;/p&gt;  &lt;div&gt;   &lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;/// Rss Helper&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; RssHelper&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;/// 取回Rss內容&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; GetRssContent()&lt;br /&gt;   {&lt;br /&gt;       var rss = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; RssToolkit.Rss.RssChannel();&lt;br /&gt;       rss.Title = &lt;span style="color: rgb(0, 96, 128);"&gt;"我的訊息RSS"&lt;/span&gt;;&lt;br /&gt;       rss.Link = &lt;span style="color: rgb(0, 96, 128);"&gt;"/"&lt;/span&gt;;&lt;br /&gt;       rss.Description = &lt;span style="color: rgb(0, 96, 128);"&gt;""&lt;/span&gt;;&lt;br /&gt;       rss.PubDate = DateTime.Now.ToString(&lt;span style="color: rgb(0, 96, 128);"&gt;"r"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;       var data = GetDb().RssMessages;&lt;br /&gt;       List&amp;lt;RssToolkit.Rss.RssItem&amp;gt; rssInfoList = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; List&amp;lt;RssToolkit.Rss.RssItem&amp;gt;();&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var item &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; data)&lt;br /&gt;       {&lt;br /&gt;           RssToolkit.Rss.RssItem rItem = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; RssToolkit.Rss.RssItem();&lt;br /&gt;           rItem.Author = item.Author;&lt;br /&gt;           rItem.Title = item.Title;&lt;br /&gt;           rItem.Description = item.Content;&lt;br /&gt;           rItem.Link = String.Format(&lt;span style="color: rgb(0, 96, 128);"&gt;"http://{0}/RSS/{1}"&lt;/span&gt;, HttpContext.Current.Request.Url.Authority, item.Id);&lt;br /&gt;           rItem.PubDate = item.StartDate.GetValue(DateTime.Now).ToString(&lt;span style="color: rgb(0, 96, 128);"&gt;"r"&lt;/span&gt;);&lt;br /&gt;           rssInfoList.Add(rItem);&lt;br /&gt;       }&lt;br /&gt;       rss.Items = rssInfoList;&lt;br /&gt;&lt;br /&gt;       var doc = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; RssToolkit.Rss.RssDocument();&lt;br /&gt;       doc.Channel = rss;&lt;br /&gt;       doc.Version = &lt;span style="color: rgb(0, 96, 128);"&gt;"2.0"&lt;/span&gt;;&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; doc.ToXml(RssToolkit.Rss.DocumentType.Rss).Replace(&lt;span style="color: rgb(0, 96, 128);"&gt;"utf-16"&lt;/span&gt;, &lt;span style="color: rgb(0, 96, 128);"&gt;"utf-8"&lt;/span&gt;);&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;這樣就很簡單的把字串直接抓出來，你要怎麼處理就怎麼處理，讚吧！！&lt;/div&gt;&lt;br /&gt;&lt;div&gt;參考：&lt;/div&gt;&lt;div&gt;&lt;a title="http://aspnetrsstoolkit.codeplex.com/" href="http://aspnetrsstoolkit.codeplex.com/"&gt;http://aspnetrsstoolkit.codeplex.com/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-434418883932396406?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/PH54RjvbQBU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/434418883932396406/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=434418883932396406" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/434418883932396406?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/434418883932396406?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/PH54RjvbQBU/aspnet-rss-toolkit.html" title="ASP.NET RSS Toolkit 的使用方法（字串輸出）" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2010/10/aspnet-rss-toolkit.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YHRHo4fip7ImA9Wx5VGEU.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-3947097658577300146</id><published>2010-10-12T21:07:00.002+08:00</published><updated>2010-10-12T21:12:15.436+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-12T21:12:15.436+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linq" /><title>(題目)取亂數不重複 2</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aOLGeKNhuzgDo6I-4BPOv09ht-0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aOLGeKNhuzgDo6I-4BPOv09ht-0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aOLGeKNhuzgDo6I-4BPOv09ht-0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aOLGeKNhuzgDo6I-4BPOv09ht-0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;之前發過一篇文章"&lt;a href="http://bibby.be/2009/10/blog-post_21.html" target="_blank"&gt;(題目)取亂數不重複&lt;/a&gt;"，這篇文章用了&lt;strong&gt;洗牌演算法&lt;/strong&gt;來做這個需求，這個 method 效率跟功能都很不錯，也時常在專案中使用到，今天在處理相同的問題時，順手問一下同事，也查一下網路的資料，發現有一種寫法也很不錯，這裡也來紀錄一下，直接看 code 吧！！&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; RandomCreator&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;/// 取出亂數不重複的array&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;param name="min"&amp;gt;最大值&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;param name="max"&amp;gt;最小值&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;param name="count"&amp;gt;取出的筆數&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;[] GetRandomNumber(&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; min, &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; max, &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; count)&lt;br /&gt;   {&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (max - min &amp;lt; 0)&lt;br /&gt;           &lt;span style="color: rgb(0, 0, 255);"&gt;throw&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Exception(&lt;span style="color: rgb(0, 96, 128);"&gt;"請輸入正確的範圍"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ((max - min + 1) &amp;lt; count)&lt;br /&gt;           &lt;span style="color: rgb(0, 0, 255);"&gt;throw&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Exception(&lt;span style="color: rgb(0, 96, 128);"&gt;"請輸入想取得的正確數字"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; rang = max - min + 1;&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; Enumerable.Range(min, rang)&lt;br /&gt;               .OrderBy(a =&amp;gt; Guid.NewGuid())&lt;br /&gt;               .Take(count)&lt;br /&gt;               .ToArray();&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;上面的方法，就是把範圍取出來，然後用guid去標記之後再排序，因為guid每次都不同，所以就亂數啦，這方法很像我們 MS-SQL 裡面取亂數的方法，很簡單又很直覺，分享一下..^^..&lt;/div&gt;&lt;br /&gt;&lt;div&gt;參考：&lt;/div&gt;&lt;div&gt;&lt;a title="http://msdn.microsoft.com/zh-tw/library/system.linq.enumerable.range.aspx" href="http://msdn.microsoft.com/zh-tw/library/system.linq.enumerable.range.aspx"&gt;http://msdn.microsoft.com/zh-tw/library/system.linq.enumerable.range.aspx&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-3947097658577300146?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/SVfgi5XO0t8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/3947097658577300146/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=3947097658577300146" title="2 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/3947097658577300146?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/3947097658577300146?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/SVfgi5XO0t8/2.html" title="(題目)取亂數不重複 2" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://bibby.be/2010/10/2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYGRHc8fSp7ImA9Wx5VEk0.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-7866602630071713049</id><published>2010-10-04T22:34:00.002+08:00</published><updated>2010-10-04T22:38:45.975+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-04T22:38:45.975+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="軟體試用" /><title>用 Subversion 來自動更新網站版本和更新時間</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-XVNqyfJWAA3lGwv-LNSUXfHYck/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-XVNqyfJWAA3lGwv-LNSUXfHYck/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-XVNqyfJWAA3lGwv-LNSUXfHYck/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-XVNqyfJWAA3lGwv-LNSUXfHYck/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;不知道各位有沒有在用版本控管的程式，小弟有在用 Subversion 這個軟體，來幫我做版本管理，用了一段時間，也越來越習慣 Subversion 這個軟體，今天來分享一下小技巧，先把想法需求說出來。我的目標是想要把 Subversion 的&lt;strong&gt;版本&lt;/strong&gt;和&lt;strong&gt;更新的時間&lt;/strong&gt;放在頁面上，讓我就可以方便做出網站版本和更新時間功能..&lt;/p&gt;  &lt;p&gt;如下圖&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TKnlznGE2wI/AAAAAAAAC-0/hPili3JtR0c/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh3.ggpht.com/_8qQpVjicx4A/TKnl0Dr9o_I/AAAAAAAAC-4/t1kLsCuwK6w/image_thumb%5B2%5D.png?imgmax=800" border="0" height="316" width="512" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;這個作法很簡單，只要簡單的設定就行了，看圖說故事吧，首先我們先找到我們要顯示版本頁面的&lt;strong&gt;檔案&lt;/strong&gt;，按下右鍵&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TKnl1KdAzPI/AAAAAAAAC-8/yYYMmORvFMA/s1600-h/image%5B24%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TKnl3bsfI2I/AAAAAAAAC_A/UdMc5Bl7g8U/image_thumb%5B14%5D.png?imgmax=800" border="0" height="715" width="587" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;再選擇 Subversion -&amp;gt; Properties&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TKnl4RWt0kI/AAAAAAAAC_E/imn4tMHGiGU/s1600-h/SNAGHTML522d1e9%5B5%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="SNAGHTML522d1e9" alt="SNAGHTML522d1e9" src="http://lh5.ggpht.com/_8qQpVjicx4A/TKnl4z90JYI/AAAAAAAAC_I/N4H2XfL-nbA/SNAGHTML522d1e9_thumb%5B2%5D.png?imgmax=800" border="0" height="558" width="407" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;接下來看到 Properties 視窗，選擇 New&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TKnl5n5LfcI/AAAAAAAAC_M/QCDjvv8SEeU/s1600-h/SNAGHTML5244f14%5B5%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="SNAGHTML5244f14" alt="SNAGHTML5244f14" src="http://lh6.ggpht.com/_8qQpVjicx4A/TKnl6McAUUI/AAAAAAAAC_Q/TZULKYhmQtU/SNAGHTML5244f14_thumb%5B2%5D.png?imgmax=800" border="0" height="295" width="582" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;再把需要修改的內容寫入(需要更多的設定訊息，請看&lt;a href="http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.keywords.html" target="_blank"&gt;這裡&lt;/a&gt;）&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TKnl607wr-I/AAAAAAAAC_U/GwW7eOYOnIk/s1600-h/SNAGHTML525c9ce%5B4%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="SNAGHTML525c9ce" alt="SNAGHTML525c9ce" src="http://lh4.ggpht.com/_8qQpVjicx4A/TKnl7lmkgyI/AAAAAAAAC_Y/pgn65wHD18E/SNAGHTML525c9ce_thumb%5B1%5D.png?imgmax=800" border="0" height="317" width="358" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;這樣設定就完成啦，之後再簡單把程式設定加入就行了，接下去看&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TKnl8IxT85I/AAAAAAAAC_c/h7hi7ReBJX8/s1600-h/image%5B14%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TKnl86yBRBI/AAAAAAAAC_g/jUGEC7tePaI/image_thumb%5B8%5D.png?imgmax=800" border="0" height="433" width="610" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;注意上面這畫框框地方，注意上面紅色框框的地方，Subversion 在&lt;strong&gt;更新&lt;/strong&gt;的時候就會幫你自動取代掉，格式就像下面這樣&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TKnl9jPojGI/AAAAAAAAC_k/5LbFd-YI6co/s1600-h/image%5B19%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TKnl-JmkThI/AAAAAAAAC_o/oeFC4BsmRns/image_thumb%5B11%5D.png?imgmax=800" border="0" height="42" width="540" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;我們再簡單處理一下內容，就可以了，讚！！&lt;/p&gt;  &lt;p&gt;參考：  &lt;br /&gt;&lt;a title="http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.keywords.html" href="http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.keywords.html"&gt;http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.keywords.html&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-7866602630071713049?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/AEG49288fNo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/7866602630071713049/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=7866602630071713049" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/7866602630071713049?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/7866602630071713049?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/AEG49288fNo/subversion.html" title="用 Subversion 來自動更新網站版本和更新時間" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_8qQpVjicx4A/TKnl0Dr9o_I/AAAAAAAAC-4/t1kLsCuwK6w/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2010/10/subversion.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcBQn0zeip7ImA9Wx5WEE0.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-1819290118939263662</id><published>2010-09-21T02:06:00.002+08:00</published><updated>2010-09-21T02:07:33.382+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-21T02:07:33.382+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="軟體試用" /><title>修改 Subversion 的 Log Message</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OtziHk77eDJYxu1J2Z6YOli-SlQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OtziHk77eDJYxu1J2Z6YOli-SlQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OtziHk77eDJYxu1J2Z6YOli-SlQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OtziHk77eDJYxu1J2Z6YOli-SlQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;不知各位在使用 Subversion 的時後，是否常常在上傳 Log Message 後覺得自己好像沒有寫的很好，或是有些時候想改一下某版本的 Log Message..  &lt;br /&gt;今天分享一下如何修改 Subversion 的 Log Message，大家看圖說故事吧！&lt;/p&gt;  &lt;p&gt;先選擇要修改哪一個版本&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TJeicT1t8xI/AAAAAAAAC94/wKfCmV4Cblo/s1600-h/image%5B31%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh4.ggpht.com/_8qQpVjicx4A/TJeidGyIpQI/AAAAAAAAC98/oCU7eqUZl0g/image_thumb%5B19%5D.png?imgmax=800" border="0" height="424" width="544" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;寫入要修改的文字&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TJeidy-y4LI/AAAAAAAAC-A/sKY5q9C2EgA/s1600-h/SNAGHTML8416800%5B5%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="SNAGHTML8416800" alt="SNAGHTML8416800" src="http://lh5.ggpht.com/_8qQpVjicx4A/TJeie5S20CI/AAAAAAAAC-E/Z4HpZa2CoSs/SNAGHTML8416800_thumb%5B2%5D.png?imgmax=800" border="0" height="222" width="372" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;出現錯誤拉..&amp;gt;&amp;lt;||..  &lt;br /&gt;看了一下錯誤，原來是權限的問題，subversion 預設是不允許回去改 Message Log 的，所以要去改 Server 端的權限&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TJeifmK4Z-I/AAAAAAAAC-I/Q9xIQZdKd-g/s1600-h/SNAGHTML8420ed9%5B5%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="SNAGHTML8420ed9" alt="SNAGHTML8420ed9" src="http://lh6.ggpht.com/_8qQpVjicx4A/TJeigCdqsdI/AAAAAAAAC-M/oXwHufYQb-I/SNAGHTML8420ed9_thumb%5B2%5D.png?imgmax=800" border="0" height="164" width="499" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;修改 Server 端的 VisualSVN Server 的權限&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TJeig5yUjDI/AAAAAAAAC-Q/eb-RDCZ8kN8/s1600-h/image%5B14%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh5.ggpht.com/_8qQpVjicx4A/TJeih0i680I/AAAAAAAAC-U/upnq-TsnQJs/image_thumb%5B8%5D.png?imgmax=800" border="0" height="408" width="423" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;修改 Pre-revision property change hook&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TJeiig9S8PI/AAAAAAAAC-Y/L1AtL8-pVLc/s1600-h/image%5B19%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh5.ggpht.com/_8qQpVjicx4A/TJeijcwM5vI/AAAAAAAAC-c/h0nlyvlrIPc/image_thumb%5B11%5D.png?imgmax=800" border="0" height="472" width="372" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;把下面提供的 script 貼到這裡面，就可以啦&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TJeikI_9RRI/AAAAAAAAC-g/dx8sYzHfqU0/s1600-h/image%5B26%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TJeikqnsiRI/AAAAAAAAC-k/ZubbW2wuNFE/image_thumb%5B16%5D.png?imgmax=800" border="0" height="449" width="537" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Script&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;@ECHO OFF&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; repos=%1&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; rev=%2&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;user&lt;/span&gt;=%3&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; propname=%4&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;action&lt;/span&gt;=%5&lt;br /&gt;&lt;br /&gt;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;br /&gt;:: &lt;span style="color: rgb(0, 0, 255);"&gt;Only&lt;/span&gt; allow changes &lt;span style="color: rgb(0, 0, 255);"&gt;to&lt;/span&gt; svn:log. The author, &lt;span style="color: rgb(0, 0, 255);"&gt;date&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;and&lt;/span&gt; other revision&lt;br /&gt;:: properties cannot be changed&lt;br /&gt;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;br /&gt;if /I &lt;span style="color: rgb(0, 0, 255);"&gt;not&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;'%propname%'&lt;/span&gt;==&lt;span style="color: rgb(0, 96, 128);"&gt;'svn:log'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;goto&lt;/span&gt; ERROR_PROPNAME&lt;br /&gt;&lt;br /&gt;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;br /&gt;:: &lt;span style="color: rgb(0, 0, 255);"&gt;Only&lt;/span&gt; allow modifications &lt;span style="color: rgb(0, 0, 255);"&gt;to&lt;/span&gt; svn:log (&lt;span style="color: rgb(0, 0, 255);"&gt;no&lt;/span&gt; addition/overwrite &lt;span style="color: rgb(0, 0, 255);"&gt;or&lt;/span&gt; deletion)&lt;br /&gt;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;br /&gt;if /I &lt;span style="color: rgb(0, 0, 255);"&gt;not&lt;/span&gt; &lt;span style="color: rgb(0, 96, 128);"&gt;'%action%'&lt;/span&gt;==&lt;span style="color: rgb(0, 96, 128);"&gt;'M'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;goto&lt;/span&gt; ERROR_ACTION&lt;br /&gt;&lt;br /&gt;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;br /&gt;:: Make sure that the new svn:log message contains &lt;span style="color: rgb(0, 0, 255);"&gt;some&lt;/span&gt; text.&lt;br /&gt;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; bIsEmpty=&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt; /f "tokens=*" %%g &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; (&lt;span style="color: rgb(0, 96, 128);"&gt;'find /V ""'&lt;/span&gt;) do (&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt; bIsEmpty=&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;br /&gt;)&lt;br /&gt;if &lt;span style="color: rgb(0, 96, 128);"&gt;'%bIsEmpty%'&lt;/span&gt;==&lt;span style="color: rgb(0, 96, 128);"&gt;'true'&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;goto&lt;/span&gt; ERROR_EMPTY&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;goto&lt;/span&gt; :eof&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;:ERROR_EMPTY&lt;br /&gt;echo Empty svn:log properties &lt;span style="color: rgb(0, 0, 255);"&gt;are&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;not&lt;/span&gt; allowed. &amp;gt;&amp;amp;2&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;goto&lt;/span&gt; ERROR_EXIT&lt;br /&gt;&lt;br /&gt;:ERROR_PROPNAME&lt;br /&gt;echo &lt;span style="color: rgb(0, 0, 255);"&gt;Only&lt;/span&gt; changes &lt;span style="color: rgb(0, 0, 255);"&gt;to&lt;/span&gt; svn:log revision properties &lt;span style="color: rgb(0, 0, 255);"&gt;are&lt;/span&gt; allowed. &amp;gt;&amp;amp;2&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;goto&lt;/span&gt; ERROR_EXIT&lt;br /&gt;&lt;br /&gt;:ERROR_ACTION&lt;br /&gt;echo &lt;span style="color: rgb(0, 0, 255);"&gt;Only&lt;/span&gt; modifications &lt;span style="color: rgb(0, 0, 255);"&gt;to&lt;/span&gt; svn:log revision properties &lt;span style="color: rgb(0, 0, 255);"&gt;are&lt;/span&gt; allowed. &amp;gt;&amp;amp;2&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;goto&lt;/span&gt; ERROR_EXIT&lt;br /&gt;&lt;br /&gt;:ERROR_EXIT&lt;br /&gt;exit /b 1 &lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;上面這段 script 很簡單，看不懂的就貼上去就好了 囧rΩ..&lt;br /&gt;&lt;br /&gt;參考：&lt;a title="http://subversion.tigris.org/" href="http://subversion.tigris.org/" target="_blank"&gt;&lt;br /&gt;http://subversion.tigris.org/&lt;/a&gt;&lt;a title="http://svn.haxx.se/users/archive-2006-03/0107.shtml" href="http://svn.haxx.se/users/archive-2006-03/0107.shtml" target="_blank"&gt;&lt;br /&gt;http://svn.haxx.se/users/archive-2006-03/0107.shtml&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-1819290118939263662?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/wIN7Lbfqv-4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/1819290118939263662/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=1819290118939263662" title="1 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/1819290118939263662?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/1819290118939263662?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/wIN7Lbfqv-4/subversion-log-message.html" title="修改 Subversion 的 Log Message" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_8qQpVjicx4A/TJeidGyIpQI/AAAAAAAAC98/oCU7eqUZl0g/s72-c/image_thumb%5B19%5D.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://bibby.be/2010/09/subversion-log-message.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcNSXc7eSp7ImA9Wx5XF0U.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-6701295555474484243</id><published>2010-08-25T21:36:00.003+08:00</published><updated>2010-09-18T12:11:38.901+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-18T12:11:38.901+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linq" /><title>用Linq to SQL亂數取一筆</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ltvoQXbi8SicadkTzvo79oPOUhA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ltvoQXbi8SicadkTzvo79oPOUhA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ltvoQXbi8SicadkTzvo79oPOUhA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ltvoQXbi8SicadkTzvo79oPOUhA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;之前有一篇文章&lt;a href="http://bibby.be/2009/10/linq-to-sql.html" target="_blank"&gt;用Linq to SQL亂數取一筆&lt;/a&gt;，今天在寫這個需求的時候，看到有更簡單的寫法，直接看 code 吧！&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Main()&lt;br /&gt;{&lt;br /&gt;  var data = Products.OrderBy(a=&amp;gt;Guid.NewGuid()).Take(1);&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;(var item &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; data)&lt;br /&gt;  {&lt;br /&gt;      Console.WriteLine(&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;.Concat(item.ProductID,&lt;span style="color: rgb(0, 96, 128);"&gt;"--"&lt;/span&gt;, item.ProductName));&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;這樣就可以很簡單做出亂數取出一筆資料了，我們來看一下生出來的 SQL Statement&lt;/div&gt;&lt;br /&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;TOP&lt;/span&gt; (1)&lt;br /&gt;[Project1].[ProductID] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [ProductID],&lt;br /&gt;[Project1].[ProductName] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [ProductName],&lt;br /&gt;[Project1].[SupplierID] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [SupplierID],&lt;br /&gt;[Project1].[QuantityPerUnit] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [QuantityPerUnit],&lt;br /&gt;[Project1].[UnitPrice] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [UnitPrice],&lt;br /&gt;[Project1].[UnitsInStock] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [UnitsInStock],&lt;br /&gt;[Project1].[UnitsOnOrder] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [UnitsOnOrder],&lt;br /&gt;[Project1].[ReorderLevel] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [ReorderLevel],&lt;br /&gt;[Project1].[Discontinued] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [Discontinued],&lt;br /&gt;[Project1].[CategoryID] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [CategoryID]&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt; ( &lt;span style="color: rgb(0, 0, 255);"&gt;SELECT&lt;/span&gt;&lt;br /&gt;  NEWID() &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [C1],&lt;br /&gt;  [Extent1].[ProductID] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [ProductID],&lt;br /&gt;  [Extent1].[ProductName] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [ProductName],&lt;br /&gt;  [Extent1].[SupplierID] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [SupplierID],&lt;br /&gt;  [Extent1].[CategoryID] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [CategoryID],&lt;br /&gt;  [Extent1].[QuantityPerUnit] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [QuantityPerUnit],&lt;br /&gt;  [Extent1].[UnitPrice] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [UnitPrice],&lt;br /&gt;  [Extent1].[UnitsInStock] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [UnitsInStock],&lt;br /&gt;  [Extent1].[UnitsOnOrder] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [UnitsOnOrder],&lt;br /&gt;  [Extent1].[ReorderLevel] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [ReorderLevel],&lt;br /&gt;  [Extent1].[Discontinued] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [Discontinued]&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;FROM&lt;/span&gt; [dbo].[Products] &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [Extent1]&lt;br /&gt;)  &lt;span style="color: rgb(0, 0, 255);"&gt;AS&lt;/span&gt; [Project1]&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;ORDER&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;BY&lt;/span&gt; [Project1].[C1] &lt;span style="color: rgb(0, 0, 255);"&gt;ASC&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Linq to SQL 幫我們用 NEWID 生出子查詢，然後再用排序的方式來抓出來，讚吧，簡單多了..^^..&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;PS: 經過一些測試，好像是.net framework 4.0才有效過ㄟ，^^||..喵滴..&lt;br /&gt;&lt;br /&gt;參考：&lt;a title="http://msdn.microsoft.com/zh-tw/library/bb386976.aspx" href="http://msdn.microsoft.com/zh-tw/library/bb386976.aspx"&gt;&lt;br /&gt;http://msdn.microsoft.com/zh-tw/library/bb386976.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-6701295555474484243?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/43_cSri8DGY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/6701295555474484243/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=6701295555474484243" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/6701295555474484243?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/6701295555474484243?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/43_cSri8DGY/linq-to-sql.html" title="用Linq to SQL亂數取一筆" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2010/08/linq-to-sql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUCQnk4cSp7ImA9Wx5SFUo.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-3124328828227253780</id><published>2010-08-11T22:55:00.003+08:00</published><updated>2010-08-12T09:57:43.739+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-12T09:57:43.739+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Image 轉 Byte[] 的 GDI Error</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eeHnkWTlFrLOsIYzi2rzPtl05y0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eeHnkWTlFrLOsIYzi2rzPtl05y0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eeHnkWTlFrLOsIYzi2rzPtl05y0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eeHnkWTlFrLOsIYzi2rzPtl05y0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;今天在把 Image 轉成 Byte[] 的時候，一直遇到下列這個錯誤..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TGK55OfTSAI/AAAAAAAAC9A/ykdgkMrssPU/s1600-h/errorPage%5B4%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="errorPage" alt="errorPage" src="http://lh4.ggpht.com/_8qQpVjicx4A/TGK551a2VKI/AAAAAAAAC9E/lLhh7Oxazko/errorPage_thumb%5B2%5D.png?imgmax=800" border="0" height="237" width="452" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;關於這個錯誤，網路上沒有啥資料可以使用，自己 try 了半天，終於成功用出來了..XD&lt;br /&gt;在這裡紀錄一下，讓以後遇到相同問題的人可以不用像我一樣這樣亂七八糟的亂試，看下面的 code 吧!!&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;/// Image轉Byte[]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;param name="image"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;byte&lt;/span&gt;[] GetImageByte(Image image)&lt;br /&gt;{&lt;br /&gt; Image newImage = image.GetThumbnailImage(image.Width, image.Height,&lt;br /&gt;     &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; System.Drawing.Image.GetThumbnailImageAbort(callBack), IntPtr.Zero);&lt;br /&gt;&lt;br /&gt; ImageConverter converter = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; ImageConverter();&lt;br /&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; (&lt;span style="color: rgb(0, 0, 255);"&gt;byte&lt;/span&gt;[])converter.ConvertTo(newImage, &lt;span style="color: rgb(0, 0, 255);"&gt;typeof&lt;/span&gt;(&lt;span style="color: rgb(0, 0, 255);"&gt;byte&lt;/span&gt;[]));&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt; callBack()&lt;br /&gt;{&lt;br /&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;這 method 的寫法，就是利用原本的 Image 生出一個跟自己一樣的 Image，得到新的 Image 再轉出來，雖然自己有覺得在逃避問題，不過，山不轉路轉阿，先轉過去，之後有時間來慢慢研究吧..暈..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-3124328828227253780?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/6pv_jQinO1o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/3124328828227253780/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=3124328828227253780" title="2 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/3124328828227253780?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/3124328828227253780?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/6pv_jQinO1o/image-byte-gdi-error.html" title="Image 轉 Byte[] 的 GDI Error" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_8qQpVjicx4A/TGK551a2VKI/AAAAAAAAC9E/lLhh7Oxazko/s72-c/errorPage_thumb%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://bibby.be/2010/08/image-byte-gdi-error.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIMSHszfyp7ImA9Wx5TGEk.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-3401017664412278102</id><published>2010-08-03T22:34:00.004+08:00</published><updated>2010-08-03T22:43:09.587+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-03T22:43:09.587+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="亂七八糟" /><title>中計了..FILCO 黑軸 80%</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fylJ7Sy2H8pKGCSdT95N74mVh4I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fylJ7Sy2H8pKGCSdT95N74mVh4I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fylJ7Sy2H8pKGCSdT95N74mVh4I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fylJ7Sy2H8pKGCSdT95N74mVh4I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;噹噹噹，中計了中計了，話說之前在回家的路上，收到一個自稱好心人士的&lt;a href="http://bibby.be/2010/06/filco-majestouch.html" target="_blank"&gt;禮物&lt;/a&gt;，心想天下哪有這麼好康的事情，可以讓我無限使用無限享受這份大禮，事情發生不到兩個月，內心驚覺這是個陰謀這是個陰謀，電視上常常看到有些新聞，就是使用一些手段讓人不知不覺的上癮，之後就離不開了，現在的我，情況就像這樣，使用了好的鍵盤後再用其他鍵盤就感覺很暗暗暗，今日心癢難忍，所以下班就去光華"金鍵盤"敗家啦..&amp;gt;&amp;lt;||..&lt;/p&gt;  &lt;p&gt;先看一下他的外殼..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TFgoz7opRtI/AAAAAAAAC8U/96EijqjmhBw/s1600-h/DPP_00001%5B4%5D.jpg"&gt;&lt;img style="border-width: 0px; display: inline;" title="DPP_00001" alt="DPP_00001" src="http://lh6.ggpht.com/_8qQpVjicx4A/TFgo0l5bkGI/AAAAAAAAC8Y/IIA0lRqVEBs/DPP_00001_thumb%5B2%5D.jpg?imgmax=800" border="0" height="600" width="400" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;開箱了開箱了..&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TFgo1ZdzMTI/AAAAAAAAC8c/bgGH16SnH5o/s1600-h/DPP_00002%5B4%5D.jpg"&gt;&lt;img style="border-width: 0px; display: inline;" title="DPP_00002" alt="DPP_00002" src="http://lh4.ggpht.com/_8qQpVjicx4A/TFgo2NRbz0I/AAAAAAAAC8g/xBtLKF6Vtok/DPP_00002_thumb%5B2%5D.jpg?imgmax=800" border="0" height="400" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;看一下可愛的mark..&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TFgo2l5cUvI/AAAAAAAAC8k/p65xZuZeJbo/s1600-h/DPP_00003%5B4%5D.jpg"&gt;&lt;img style="border-width: 0px; display: inline;" title="DPP_00003" alt="DPP_00003" src="http://lh3.ggpht.com/_8qQpVjicx4A/TFgo3YVRcoI/AAAAAAAAC8o/Un3XJWwWVcU/DPP_00003_thumb%5B2%5D.jpg?imgmax=800" border="0" height="400" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;正面來一張..無痕的無痕的..&lt;/p&gt;  &lt;p&gt; &lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TFgo4jxS76I/AAAAAAAAC8s/eVAuoiLOMkk/s1600-h/DPP_00004%5B4%5D.jpg"&gt;&lt;img style="border-width: 0px; display: inline;" title="DPP_00004" alt="DPP_00004" src="http://lh6.ggpht.com/_8qQpVjicx4A/TFgo5NRtSNI/AAAAAAAAC8w/ElmmfPRypxk/DPP_00004_thumb%5B2%5D.jpg?imgmax=800" border="0" height="400" width="600" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;側面來一張...優滴優滴..&lt;/p&gt;  &lt;p&gt; &lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TFgo5y3S3EI/AAAAAAAAC80/XieEcwHJjzg/s1600-h/DPP_00005%5B4%5D.jpg"&gt;&lt;img style="border-width: 0px; display: inline;" title="DPP_00005" alt="DPP_00005" src="http://lh5.ggpht.com/_8qQpVjicx4A/TFgo6t16CnI/AAAAAAAAC84/w7lTVssTDpo/DPP_00005_thumb%5B2%5D.jpg?imgmax=800" border="0" height="600" width="400" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;阿們，這次敗家的花了3200大洋，也算是對自己手指的一個犒賞，畢竟鍵盤是我的吃飯傢伙，買好一點等於對自己的手指好一點，該花則花，該用則用，"人參"就是這樣阿..拉拉拉拉拉...&lt;/p&gt;  &lt;p&gt;參考： &lt;br /&gt;&lt;a title="http://gdgt.com/diatec/filco/majestouch-tenkeyless/fkbn87ml-eb/" href="http://gdgt.com/diatec/filco/majestouch-tenkeyless/fkbn87ml-eb/"&gt;http://gdgt.com/diatec/filco/majestouch-tenkeyless/fkbn87ml-eb/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-3401017664412278102?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/F9tYTygD9dg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/3401017664412278102/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=3401017664412278102" title="1 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/3401017664412278102?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/3401017664412278102?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/F9tYTygD9dg/filco-80.html" title="中計了..FILCO 黑軸 80%" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_8qQpVjicx4A/TFgo0l5bkGI/AAAAAAAAC8Y/IIA0lRqVEBs/s72-c/DPP_00001_thumb%5B2%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://bibby.be/2010/08/filco-80.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUEQ3o5fSp7ImA9Wx5TFko.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-1299887823657952409</id><published>2010-08-01T22:33:00.001+08:00</published><updated>2010-08-01T22:33:22.425+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-01T22:33:22.425+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="心情雜記" /><title>未來</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TtzD1Fn90XvvfbaK35lOTzl8rKo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TtzD1Fn90XvvfbaK35lOTzl8rKo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TtzD1Fn90XvvfbaK35lOTzl8rKo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TtzD1Fn90XvvfbaK35lOTzl8rKo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;女人用最珍貴的青春&lt;/p&gt;  &lt;p&gt;來等待沒有確定的未來&lt;/p&gt;  &lt;p&gt;是真愛還是太傻&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-1299887823657952409?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/l5dAHTxEeWk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/1299887823657952409/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=1299887823657952409" title="2 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/1299887823657952409?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/1299887823657952409?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/l5dAHTxEeWk/blog-post.html" title="未來" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://bibby.be/2010/08/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAHSHwyfyp7ImA9Wx5TFkg.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-5063808042314041070</id><published>2010-08-01T17:58:00.001+08:00</published><updated>2010-08-01T17:58:59.297+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-01T17:58:59.297+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ADO.NET" /><title>手動加入 Entity Framework 的關聯</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/J-YIvKR8crkZ3zJ0rd31WJX-IkA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/J-YIvKR8crkZ3zJ0rd31WJX-IkA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/J-YIvKR8crkZ3zJ0rd31WJX-IkA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/J-YIvKR8crkZ3zJ0rd31WJX-IkA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;今天來紀錄在使用 Entity Framework 的一個技巧，我們常常在使用 .edmx 的時候需要自己去拉關聯，因為有時候資料庫的 table 跟 table 不一定會在一開始設計的時候加上關聯，或是有些時候資料庫部份我們並沒有權限去修改，這時候我們就可以自己去 .edmx 上面拉關聯，這樣我們在寫 linq to entity 就可以不用用 join in 的方式而是直接用關聯的方式寫就行了，下面我建立一個簡單的兩個 table 來做的簡單的範例&lt;/p&gt;  &lt;p&gt;這是簡單的兩個 Table，因為資料庫裡面沒有設關聯，所以在 edmx 裡是沒有關聯的&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TFVFTqYEpUI/AAAAAAAAC7s/5C5ok44RYpc/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_8qQpVjicx4A/TFVFUQjCcQI/AAAAAAAAC7w/4FrB0yjHGuM/image_thumb%5B2%5D.png?imgmax=800" width="407" height="186" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;我們手動加入關聯&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TFVFU1unyDI/AAAAAAAAC70/_lEpaoOjjCo/s1600-h/SNAGHTMLecfebd%5B5%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SNAGHTMLecfebd" border="0" alt="SNAGHTMLecfebd" src="http://lh3.ggpht.com/_8qQpVjicx4A/TFVFVQbQyHI/AAAAAAAAC74/QN4KhwhAxT4/SNAGHTMLecfebd_thumb%5B2%5D.png?imgmax=800" width="478" height="568" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;之後我們還要在&amp;quot;關聯&amp;quot;設定&amp;quot;Mapping Details&amp;quot;下面這個才算完成&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TFVFV7Q70nI/AAAAAAAAC78/n2BH4iuUB2w/s1600-h/image%5B19%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TFVFWc9fgfI/AAAAAAAAC8A/ZYypB5pHkZ0/image_thumb%5B11%5D.png?imgmax=800" width="646" height="300" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;編譯一下，竟然發現出現錯誤..&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TFVFW2ZjWhI/AAAAAAAAC8E/u7MBQDMNc58/s1600-h/image%5B24%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_8qQpVjicx4A/TFVFXNsTS4I/AAAAAAAAC8I/Wg0KFYL4XMg/image_thumb%5B14%5D.png?imgmax=800" width="646" height="197" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;我們還要去把 Child 的 ParentId 去掉才會正確編譯的過..&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TFVFYJLb2gI/AAAAAAAAC8M/6r-7yyWbxOs/s1600-h/image%5B29%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_8qQpVjicx4A/TFVFYvdbe_I/AAAAAAAAC8Q/3OaMxtZjsuo/image_thumb%5B17%5D.png?imgmax=800" width="541" height="503" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;這樣就 ok 啦，住意這個修改只有在 .edmx 裡有作用，在資料庫那邊完全不會有任何改變，所以大可放心去修改吧！&lt;/p&gt;  &lt;p&gt;參考：   &lt;br /&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/aa697427%28VS.80%29.aspx" href="http://msdn.microsoft.com/en-us/library/aa697427%28VS.80%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa697427%28VS.80%29.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-5063808042314041070?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/x9V0KhEJQIA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/5063808042314041070/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=5063808042314041070" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/5063808042314041070?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/5063808042314041070?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/x9V0KhEJQIA/entity-framework.html" title="手動加入 Entity Framework 的關聯" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_8qQpVjicx4A/TFVFUQjCcQI/AAAAAAAAC7w/4FrB0yjHGuM/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2010/08/entity-framework.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IGQ3o5cCp7ImA9WxFaGE4.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-7023870911142290341</id><published>2010-07-23T06:53:00.003+08:00</published><updated>2010-07-23T06:58:42.428+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-23T06:58:42.428+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="軟體試用" /><title>用 LinqPad 來使用 Entity Framework</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EHMuXgVo_Y3z71nx5ef-lPPJlVY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EHMuXgVo_Y3z71nx5ef-lPPJlVY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EHMuXgVo_Y3z71nx5ef-lPPJlVY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EHMuXgVo_Y3z71nx5ef-lPPJlVY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;最近再研究 Entity Framework，也試著用 Entity Frmaework 來寫專案，發覺真的需要一個工具可以幫我快速開發，以及驗證產出來的SQL Statement到底好不好，朋友就推薦我用 LinqPad，上官方網站也說可以支援 Enitity Framework，所以就直接下載來試用了，不過在 LinqPad 使用 Entity Frmaework，&lt;a href="http://www.linqpad.net/" target="_blank"&gt;官方網站&lt;/a&gt;文字上並沒有說得很詳細，這裡簡單的介紹如何使用 LinqPad 來使用 Entity Framework&lt;/p&gt;  &lt;p&gt;首先先新增一個 Class 專案&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TEjLth98yrI/AAAAAAAAC1c/2SoJbyKCP44/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh3.ggpht.com/_8qQpVjicx4A/TEjLuRwRddI/AAAAAAAAC1g/uxqSqZwF-MQ/image_thumb%5B3%5D.png?imgmax=800" border="0" height="513" width="590" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;新增完，就可以在專案裡面新增要新增的 edmx 類型的檔案&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TEjLu7ilVGI/AAAAAAAAC1k/NHwiPBlUZGM/s1600-h/image%5B10%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh4.ggpht.com/_8qQpVjicx4A/TEjLv1oQHXI/AAAAAAAAC1o/flNrKY9cTJM/image_thumb%5B6%5D.png?imgmax=800" border="0" height="460" width="587" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;新增 ADO.NET Entitiy Data Model&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TEjLwtIAWdI/AAAAAAAAC1s/6J2nmYga8m8/s1600-h/image%5B16%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh4.ggpht.com/_8qQpVjicx4A/TEjLxNYnX2I/AAAAAAAAC1w/YUAGh6eK1hs/image_thumb%5B10%5D.png?imgmax=800" border="0" height="609" width="555" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;內容選擇從資料庫取出來&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TEjLx-n4dII/AAAAAAAAC10/prlDM8i3w1M/s1600-h/image%5B21%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TEjLyX2solI/AAAAAAAAC14/EKN4MJH1WQY/image_thumb%5B13%5D.png?imgmax=800" border="0" height="565" width="418" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;這裡就是最熟悉不過的設定了&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TEjLzc-H8uI/AAAAAAAAC18/W67ohb341NY/s1600-h/image%5B26%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh4.ggpht.com/_8qQpVjicx4A/TEjL0GdbK0I/AAAAAAAAC2A/neurOZv_TdU/image_thumb%5B16%5D.png?imgmax=800" border="0" height="687" width="623" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;繼續設定下去吧&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TEjL0_uJY5I/AAAAAAAAC2E/CVvjHu7ol1g/s1600-h/image%5B31%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TEjL1js36VI/AAAAAAAAC2I/G5gPjuqXtGM/image_thumb%5B19%5D.png?imgmax=800" border="0" height="585" width="474" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;這裡我是把所有的 Table 加進去&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TEjL2eD7q_I/AAAAAAAAC2M/vzj7Nx-sops/s1600-h/image%5B36%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh3.ggpht.com/_8qQpVjicx4A/TEjL3BTmBhI/AAAAAAAAC2Q/dJ0JwQRmZ8A/image_thumb%5B22%5D.png?imgmax=800" border="0" height="580" width="508" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;產完了，我們現在來編譯一下，因為編譯才會生出 dll 檔案&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TEjL33Kk0II/AAAAAAAAC2U/-lzP0XtoJVo/s1600-h/image%5B41%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh3.ggpht.com/_8qQpVjicx4A/TEjL4hP4w4I/AAAAAAAAC2Y/gz7R31lfe94/image_thumb%5B25%5D.png?imgmax=800" border="0" height="143" width="447" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;編譯完成後，就可以開啟 LinqPad 來設定啦，首先按 Add connection&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TEjL5XIff1I/AAAAAAAAC2c/WFJaGxP-iKA/s1600-h/image%5B46%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh3.ggpht.com/_8qQpVjicx4A/TEjL6JyyJEI/AAAAAAAAC2g/GWJdzEJZD2M/image_thumb%5B28%5D.png?imgmax=800" border="0" height="596" width="640" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;在 Path to Custom Assembly 選擇我們剛剛編譯出來的 dll 檔案&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TEjL686LjII/AAAAAAAAC2k/Q72eoh7m4y8/s1600-h/image%5B51%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh4.ggpht.com/_8qQpVjicx4A/TEjL7doyd5I/AAAAAAAAC2o/XIHKNAjgnUs/image_thumb%5B31%5D.png?imgmax=800" border="0" height="701" width="630" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;然後跟著按下確定&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TEjL8DzpQxI/AAAAAAAAC2s/gmhwr4PIrX0/s1600-h/image%5B56%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TEjL8_Gq_vI/AAAAAAAAC2w/PiZmUlNzXM8/image_thumb%5B34%5D.png?imgmax=800" border="0" height="399" width="699" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;接的設定都會幫你設定好啦，你可以按一下 Test 來確定有沒有連線錯誤&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TEjL9yoEYaI/AAAAAAAAC20/RPT1aD3O4UY/s1600-h/SNAGHTML27d3a3%5B5%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="SNAGHTML27d3a3" alt="SNAGHTML27d3a3" src="http://lh5.ggpht.com/_8qQpVjicx4A/TEjL-ncO53I/AAAAAAAAC24/lVdQEErmGTA/SNAGHTML27d3a3_thumb%5B2%5D.png?imgmax=800" border="0" height="691" width="433" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;之後就可以成功的使用 Entity Framework 啦&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TEjL_W6V0II/AAAAAAAAC28/HwQXS9-lx_M/s1600-h/image%5B61%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh4.ggpht.com/_8qQpVjicx4A/TEjMAC8Hd8I/AAAAAAAAC3A/0_X09YB_eGw/image_thumb%5B37%5D.png?imgmax=800" border="0" height="629" width="560" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;很簡單吧，讚..&lt;/p&gt;  &lt;p&gt;而且這樣用 dll 方式產生出來的連接，如果我們在資料庫專案上對 edmx 加了哪些關聯，或是多了哪些欄位，我們就可以在 LinqPad 上面馬上使用，這樣也很貼近專案的開發方式，因為有時真的蠻需要在 edmx 上面動手腳的，所以這裡真的推薦有在用 Enitity Framework 開發的使用者，可以去載來用用&lt;/p&gt;  &lt;p&gt;PS：用Linq to SQL 也可以用這一招來建立連線&lt;/p&gt;  &lt;p&gt;參考：&lt;br /&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/aa697427%28VS.80%29.aspx" href="http://msdn.microsoft.com/en-us/library/aa697427%28VS.80%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa697427%28VS.80%29.aspx&lt;/a&gt;&lt;br /&gt;&lt;a title="http://www.linqpad.net/" href="http://www.linqpad.net/"&gt;http://www.linqpad.net/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-7023870911142290341?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/SQwtFEznuIQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/7023870911142290341/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=7023870911142290341" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/7023870911142290341?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/7023870911142290341?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/SQwtFEznuIQ/linqpad-entity-framework.html" title="用 LinqPad 來使用 Entity Framework" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_8qQpVjicx4A/TEjLuRwRddI/AAAAAAAAC1g/uxqSqZwF-MQ/s72-c/image_thumb%5B3%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2010/07/linqpad-entity-framework.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEBSX46eip7ImA9WxFaFEs.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-1211395753441171857</id><published>2010-07-18T22:14:00.002+08:00</published><updated>2010-07-18T22:17:38.012+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-18T22:17:38.012+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript" /><title>(加強版) jquery 簡單新增移除 table rows</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-GhN7c9y4JVQFrtP0CxrAlVqdbA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-GhN7c9y4JVQFrtP0CxrAlVqdbA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-GhN7c9y4JVQFrtP0CxrAlVqdbA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-GhN7c9y4JVQFrtP0CxrAlVqdbA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;之前有寫一個簡單的範例 &lt;a href="http://bibby.be/2008/07/jquery-table-rows.html"&gt;jquery 簡單新增移除table rows&lt;/a&gt; ，因為有人留言說如果可以指定行數來刪除 row 那就更有實用性了，所以我就寫了一個改良版的，這個範例結合了後端用 ajax 抓取 server 端的時間，還有用 jquery 1.3 以後才有的 .live() 的函式來處理，程式更短更簡單，直接看code吧！&lt;/p&gt;  &lt;p&gt;View&lt;br /&gt;&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&amp;lt;style type=&lt;span style="color: rgb(0, 96, 128);"&gt;"text/css"&lt;/span&gt;&amp;gt;&lt;br /&gt; table&lt;br /&gt; {&lt;br /&gt;     border: solid 1px red;&lt;br /&gt;     border-collapse: collapse;&lt;br /&gt; }&lt;br /&gt; table td&lt;br /&gt; {&lt;br /&gt;     border: solid 1px red;&lt;br /&gt;     width: 150px;&lt;br /&gt; }&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;table width=&lt;span style="color: rgb(0, 96, 128);"&gt;"450px"&lt;/span&gt; cellpadding=&lt;span style="color: rgb(0, 96, 128);"&gt;"0"&lt;/span&gt; cellspacing=&lt;span style="color: rgb(0, 96, 128);"&gt;"0"&lt;/span&gt;&amp;gt;&lt;br /&gt;     &amp;lt;thead&amp;gt;&lt;br /&gt;         &amp;lt;tr&amp;gt;&lt;br /&gt;             &amp;lt;td&amp;gt;新增時間&amp;lt;/td&amp;gt;&lt;br /&gt;             &amp;lt;td&amp;gt;內容&amp;lt;/td&amp;gt;&lt;br /&gt;             &amp;lt;td&amp;gt;##&amp;lt;/td&amp;gt;&lt;br /&gt;         &amp;lt;/tr&amp;gt;&lt;br /&gt;     &amp;lt;/thead&amp;gt;&lt;br /&gt;     &amp;lt;tbody&amp;gt;&lt;br /&gt;         &amp;lt;tr&amp;gt;&lt;br /&gt;             &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;             &amp;lt;td&amp;gt;r&amp;lt;/td&amp;gt;&lt;br /&gt;             &amp;lt;td&amp;gt;&amp;lt;a href=&lt;span style="color: rgb(0, 96, 128);"&gt;"javascript:;"&lt;/span&gt;&amp;gt;刪除row&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;         &amp;lt;/tr&amp;gt;&lt;br /&gt;     &amp;lt;/tbody&amp;gt;&lt;br /&gt;     &amp;lt;tfoot&amp;gt;&lt;br /&gt;         &amp;lt;tr&amp;gt;&lt;br /&gt;             &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;             &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;             &amp;lt;td&amp;gt;&lt;br /&gt;                 &amp;lt;%= Ajax.ActionLink(&lt;span style="color: rgb(0, 96, 128);"&gt;"新增一筆"&lt;/span&gt;, &lt;span style="color: rgb(0, 96, 128);"&gt;"GetNow"&lt;/span&gt;,&lt;br /&gt;                        &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; AjaxOptions() {&lt;br /&gt;                        OnSuccess=&lt;span style="color: rgb(0, 96, 128);"&gt;"CreateRow"&lt;/span&gt;,&lt;br /&gt;                        HttpMethod=&lt;span style="color: rgb(0, 96, 128);"&gt;"POST"&lt;/span&gt;,&lt;br /&gt;                    }) %&amp;gt;&lt;br /&gt;             &amp;lt;/td&amp;gt;&lt;br /&gt;         &amp;lt;/tr&amp;gt;&lt;br /&gt;     &amp;lt;/tfoot&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;script type=&lt;span style="color: rgb(0, 96, 128);"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;br /&gt;   function CreateRow(data)&lt;br /&gt;   {&lt;br /&gt;       var time = data.get_data();&lt;br /&gt;       var newRow = $(&lt;span style="color: rgb(0, 96, 128);"&gt;'tbody tr:first'&lt;/span&gt;).clone();&lt;br /&gt;       newRow.find(&lt;span style="color: rgb(0, 96, 128);"&gt;'td:first'&lt;/span&gt;).append(time);&lt;br /&gt;       $(&lt;span style="color: rgb(0, 96, 128);"&gt;'tbody'&lt;/span&gt;).append(newRow);&lt;br /&gt;   }&lt;br /&gt;   function DeleteRow(elem)&lt;br /&gt;   {&lt;br /&gt;       var row = $(elem).parents(&lt;span style="color: rgb(0, 96, 128);"&gt;'tr'&lt;/span&gt;);&lt;br /&gt;       var index = $(&lt;span style="color: rgb(0, 96, 128);"&gt;'tr'&lt;/span&gt;).index(row);&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (index != 1)&lt;br /&gt;           row.hide();&lt;br /&gt;   }&lt;br /&gt;   $(document).ready(function ()&lt;br /&gt;   {&lt;br /&gt;       $(&lt;span style="color: rgb(0, 96, 128);"&gt;'tbody a'&lt;/span&gt;).live(&lt;span style="color: rgb(0, 96, 128);"&gt;'click'&lt;/span&gt;, function ()&lt;br /&gt;       {&lt;br /&gt;           DeleteRow(&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;);&lt;br /&gt;       });&lt;br /&gt;   });&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;controller&lt;br /&gt; &lt;div id="codeSnippetWrapper"&gt;&lt;br /&gt;&lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; TableController : Controller&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 128, 0);"&gt;// GET: /Table/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; ActionResult Index()&lt;br /&gt;   {&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; View();&lt;br /&gt;   }&lt;br /&gt;   [HttpPost]&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; ActionResult GetNow()&lt;br /&gt;   {&lt;br /&gt;       &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; Content(DateTime.Now.ToString(&lt;span style="color: rgb(0, 96, 128);"&gt;"yyyy/MM/dd HH:mm:ss"&lt;/span&gt;));&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;有圖有真相&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TEMMWVSbHVI/AAAAAAAAC04/oF_-k1b_07I/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border: 0px none; display: inline;" title="image" alt="image" src="http://lh3.ggpht.com/_8qQpVjicx4A/TEMMXAXHQKI/AAAAAAAAC08/CTcKs_HGkx0/image_thumb%5B5%5D.png?imgmax=800" border="0" height="216" width="467" /&gt;&lt;/a&gt;&lt;p&gt; &lt;/p&gt;這樣就實用性就很高啦..讚..&lt;br /&gt;參考：&lt;br /&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/dd394709.aspx" href="http://msdn.microsoft.com/en-us/library/dd394709.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd394709.aspx&lt;/a&gt;&lt;a title="http://api.jquery.com/live/" href="http://api.jquery.com/live/"&gt;&lt;br /&gt;http://api.jquery.com/live/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-1211395753441171857?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/TZ2DsOPP9qU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/1211395753441171857/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=1211395753441171857" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/1211395753441171857?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/1211395753441171857?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/TZ2DsOPP9qU/jquery-table-rows.html" title="(加強版) jquery 簡單新增移除 table rows" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_8qQpVjicx4A/TEMMXAXHQKI/AAAAAAAAC08/CTcKs_HGkx0/s72-c/image_thumb%5B5%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2010/07/jquery-table-rows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MHQ3c9eyp7ImA9WxFUF0k.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-4135522083972480871</id><published>2010-06-29T00:36:00.004+08:00</published><updated>2010-06-29T02:23:52.963+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-29T02:23:52.963+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><title>ViewModel 也可以是很複雜的型別阿！！</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-D1YH0VqE3l4g60BfOJiQsft6yw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-D1YH0VqE3l4g60BfOJiQsft6yw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-D1YH0VqE3l4g60BfOJiQsft6yw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-D1YH0VqE3l4g60BfOJiQsft6yw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;最近在實務方面，有遇到較複雜的需求，在頁面上需要有重複的子母表單，我的想法是想用 MVC 的 ViewModel 的方式丟一個 Collection 到頁面，這個 ViewModel 記載著子母表單的彼此關係，然後在頁面填完表單，可以用 Post 的方式由頁面再傳回 List&amp;lt;ViewModel&amp;gt;，讓我整個過程都用強型別來處理，所以接下來我們就把這個想法實現吧..  &lt;br /&gt;  &lt;br /&gt;我們先建立子母表單的 class，然後用 TestService 這來模擬資料來源..  &lt;br /&gt;  &lt;br /&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TCjom49sqeI/AAAAAAAACuo/oLSl3EA9jwE/s1600-h/image%5B10%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TCjonk8TUZI/AAAAAAAACus/GnJwUV_xaMk/image_thumb%5B5%5D.png?imgmax=800" width="509" height="744" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;div&gt;   &lt;br /&gt;有了個些測試資料，我們開始準備要顯示的頁面，首先我們先新增兩個 UserControl，這兩個 UserControl 都要放在 EditorTemplates 裡喔，EditoirTemplates 這個命名不能亂改阿阿阿..    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TCjPX5XDlsI/AAAAAAAACuA/SXl9ghSGqa0/s1600-h/image%5B5%5D.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://lh6.ggpht.com/_8qQpVjicx4A/TCjPYdbsAFI/AAAAAAAACuE/PH-fi3GA4D8/image_thumb%5B3%5D.png?imgmax=800" width="236" height="131" /&gt;&lt;/a&gt;    &lt;br /&gt;    &lt;br /&gt;ViewModel.ascx&lt;/div&gt;  &lt;div&gt;&amp;#160;&lt;/div&gt;  &lt;div&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TCjooedZFrI/AAAAAAAACuw/eZ62Slz5Oyc/s1600-h/image%5B15%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_8qQpVjicx4A/TCjopJpsgrI/AAAAAAAACu0/mx9-TfHPHyE/image_thumb%5B8%5D.png?imgmax=800" width="539" height="450" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;ViewModelChild.ascx&lt;/div&gt;  &lt;div id="codeSnippetWrapper"&gt;&amp;#160;&lt;/div&gt;  &lt;div&gt;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TCjoqN4JUQI/AAAAAAAACu4/43Cn1-Iju2M/s1600-h/image%5B20%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_8qQpVjicx4A/TCjoqx_1r_I/AAAAAAAACu8/QnOFiNlXTM8/image_thumb%5B11%5D.png?imgmax=800" width="569" height="241" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;接下來我們要新增View&lt;/div&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;div&gt;&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TCjPZB2NFqI/AAAAAAAACuI/qO1pmxNrFwA/s1600-h/image%5B8%5D.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://lh6.ggpht.com/_8qQpVjicx4A/TCjPZ2RS07I/AAAAAAAACuM/TMZZGS-9LIk/image_thumb%5B4%5D.png?imgmax=800" width="193" height="109" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;div&gt;EditTemplate.aspx&lt;/div&gt;  &lt;div&gt;&lt;/div&gt;  &lt;br /&gt;  &lt;div id="codeSnippetWrapper"&gt;&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TCjoroQZIJI/AAAAAAAACvA/PFwA336ubIk/s1600-h/image%5B25%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TCjosofT22I/AAAAAAAACvE/FwcPNP8jAbU/image_thumb%5B14%5D.png?imgmax=800" width="533" height="481" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;div&gt;   &lt;br /&gt;接下來我們只要加入controller就大功告成了..    &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TCjPasZonUI/AAAAAAAACuQ/OfDbch05_lU/s1600-h/image%5B11%5D.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://lh3.ggpht.com/_8qQpVjicx4A/TCjPbD2eIsI/AAAAAAAACuU/WXoMAxTC0tw/image_thumb%5B5%5D.png?imgmax=800" width="184" height="74" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;TestController.cs    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TCjotTazaNI/AAAAAAAACvI/Y3pswrJNYL4/s1600-h/image%5B30%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_8qQpVjicx4A/TCjot0rMIlI/AAAAAAAACvM/t8iLhhqqx7M/image_thumb%5B17%5D.png?imgmax=800" width="453" height="310" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;呼呼，終於把要寫的要加的都用好了，我們來看一下跑出來的結果吧！！&lt;/div&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;div&gt;Get 的方式跑出來，沒問題，優..&lt;/div&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;div&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TCjPb-utNCI/AAAAAAAACuY/ZSrZQVQQ74M/s1600-h/image%5B18%5D.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://lh4.ggpht.com/_8qQpVjicx4A/TCjPcqThK4I/AAAAAAAACuc/OrD2Z-ABR8M/image_thumb%5B10%5D.png?imgmax=800" width="259" height="418" /&gt;&lt;/a&gt;&amp;#160;&lt;/div&gt;  &lt;div&gt;&lt;/div&gt;  &lt;div&gt;重點來啦，如果 Post 的方式也可以接回 ViewModel，那就完美啦..&lt;/div&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;div&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TCjPdU_lUCI/AAAAAAAACug/M2h4xwB_QnY/s1600-h/image%5B23%5D.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://lh5.ggpht.com/_8qQpVjicx4A/TCjPeT7jXTI/AAAAAAAACuk/ucNZAU1vjFI/image_thumb%5B13%5D.png?imgmax=800" width="570" height="287" /&gt;&lt;/a&gt; &lt;/div&gt;  &lt;br /&gt;  &lt;div&gt;讚..都有抓到ㄟ，出運啦，mvc可以讓我用很簡單的方式用實質型別傳遞來處理資料，這對我們在寫程式也會非常便利，善用這種方法來處理資料，就可以不用在處理那些接值塞值得工作了..^^||...&lt;/div&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;div&gt;參考：&lt;/div&gt;  &lt;div&gt;&lt;a title="http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx" href="http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx"&gt;http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-4135522083972480871?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/iZt4NbbbuQY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/4135522083972480871/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=4135522083972480871" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/4135522083972480871?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/4135522083972480871?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/iZt4NbbbuQY/viewmodel.html" title="ViewModel 也可以是很複雜的型別阿！！" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_8qQpVjicx4A/TCjonk8TUZI/AAAAAAAACus/GnJwUV_xaMk/s72-c/image_thumb%5B5%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2010/06/viewmodel.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4CQ3g_fyp7ImA9WxFbE0k.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-8397884181155166809</id><published>2010-06-22T03:15:00.008+08:00</published><updated>2010-07-05T23:49:22.647+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-05T23:49:22.647+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ADO.NET" /><title>抓取關聯 Table 的資料</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wupnt59sd1HSoqtDdBt00D45R8Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wupnt59sd1HSoqtDdBt00D45R8Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wupnt59sd1HSoqtDdBt00D45R8Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wupnt59sd1HSoqtDdBt00D45R8Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;最近在玩 Entity Framework 這個不錯的 ORM 技術，學著自己處理一些簡單的增刪查改的動作，發現還真的不錯用，尤其想到以後可以用到不同的資料庫，又可以用相同的處理手法，就覺的是很不錯的投資，不過也有發現一些需要注意的問題，我用個範例來說明一下..  &lt;br /&gt;&lt;br /&gt;這是簡單的資料表關聯圖..   &lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TB-6HbKQfHI/AAAAAAAACtE/_fMuoFvJcms/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-width: 0px; display: inline;" title="image" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TB-6IDgumnI/AAAAAAAACtI/DyTexHvmoJg/image_thumb%5B2%5D.png?imgmax=800" border="0" height="449" width="346" /&gt;&lt;/a&gt;   &lt;br /&gt;&lt;br /&gt;&lt;b&gt;--我想由TableA抓出TableD--&lt;/b&gt;   &lt;br /&gt;&lt;br /&gt;直接下語法，取出資料.. &lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;var data = db.TableA;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var tableA &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; data)&lt;br /&gt;{&lt;br /&gt;  Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"TableA"&lt;/span&gt; + tableA.TableName);&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var tableB &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; tableA.TableB)&lt;br /&gt;  {&lt;br /&gt;      Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"--TableB--"&lt;/span&gt; + tableB.TableName);&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var tableC &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; tableB.TableC)&lt;br /&gt;      {&lt;br /&gt;          Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"----TableC----"&lt;/span&gt; + tableC.TableName);&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var tableD &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; tableC.TableD)&lt;br /&gt;          {&lt;br /&gt;              Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"------"&lt;/span&gt; + tableD.TableName + &lt;span style="color: rgb(0, 96, 128);"&gt;"-------"&lt;/span&gt;);&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;  Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"*************"&lt;/span&gt;);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;它跑出的 SQL Statement&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TB-6I0XmIhI/AAAAAAAACtM/87MR1BnXec0/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border-width: 0px; display: inline;" title="image" alt="image" src="http://lh6.ggpht.com/_8qQpVjicx4A/TB-6JbqBuFI/AAAAAAAACtQ/U-3bKpsHLdk/image_thumb%5B5%5D.png?imgmax=800" border="0" height="757" width="518" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;上圖可以看出是一個一個迴圈去下SQL Statement，這樣在筆數多的時候，效能可能會非常低落，這種方式只適合在某一個條件下去取出資料，才是比較對的選擇..&lt;br /&gt;&lt;br /&gt;我們換另一種方式用 Include 的方式去把它一次載出來..&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;var data = db.TableA.Include(&lt;span style="color: rgb(0, 96, 128);"&gt;"TableB.TableC.TableD"&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var tableA &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; data)&lt;br /&gt;{&lt;br /&gt;  Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"TableA"&lt;/span&gt; + tableA.TableName);&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var tableB &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; tableA.TableB)&lt;br /&gt;  {&lt;br /&gt;      Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"--TableB--"&lt;/span&gt; + tableB.TableName);&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var tableC &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; tableB.TableC)&lt;br /&gt;      {&lt;br /&gt;          Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"----TableC----"&lt;/span&gt; + tableC.TableName);&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var tableD &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; tableC.TableD)&lt;br /&gt;          {&lt;br /&gt;              Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"------"&lt;/span&gt; + tableD.TableName + &lt;span style="color: rgb(0, 96, 128);"&gt;"-------"&lt;/span&gt;);&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;這樣一次就下完所有的SQL Statement，把所有的資料都抓出來，效能一定比一筆一筆下好..&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_8qQpVjicx4A/TB-6KkUtv9I/AAAAAAAACtU/KB9fjTJGC5E/s1600-h/image%5B14%5D.png"&gt;&lt;img style="border-width: 0px; display: inline;" title="image" alt="image" src="http://lh4.ggpht.com/_8qQpVjicx4A/TB-6LER0TeI/AAAAAAAACtY/SqNmF3TmjEU/image_thumb%5B8%5D.png?imgmax=800" border="0" height="937" width="674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;還有另一種方式也可以一次把資料都抓出來，就是用匿名型別的方法..&lt;br /&gt;&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;pre    style="border-style: none; text-align: left; padding: 0px; line-height: 12pt; background-color: rgb(244, 244, 244); margin: 0em; width: 100%; direction: ltr; overflow: visible;font-family:'Courier New',courier,monospace;font-size:8pt;color:black;" id="codeSnippet"&gt;var data = db.TableA.Select(a =&amp;gt; &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;  tableA = a,&lt;br /&gt;  tableB = a.TableB,&lt;br /&gt;  tableC = a.TableB.Select(b =&amp;gt; b.TableC),&lt;br /&gt;  tableD = a.TableB.Select(b =&amp;gt; b.TableC.Select(c =&amp;gt; c.TableD))&lt;br /&gt;});&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var item &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; data)&lt;br /&gt;{&lt;br /&gt;  Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"TableA"&lt;/span&gt; + item.tableA.TableName);&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var tableB &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; item.tableA.TableB)&lt;br /&gt;  {&lt;br /&gt;      Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"--TableB--"&lt;/span&gt; + tableB.TableName);&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var tableC &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; tableB.TableC)&lt;br /&gt;      {&lt;br /&gt;          Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"----TableC----"&lt;/span&gt; + tableC.TableName);&lt;br /&gt;          &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (var tableD &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; tableC.TableD)&lt;br /&gt;          {&lt;br /&gt;              Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"------"&lt;/span&gt; + tableD.TableName + &lt;span style="color: rgb(0, 96, 128);"&gt;"-------"&lt;/span&gt;);&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;  Console.WriteLine(&lt;span style="color: rgb(0, 96, 128);"&gt;"*************"&lt;/span&gt;);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;下圖的 SQL Statement 是醜了點，也沒有 Include 簡潔有利，但是不失為一個好方法..&lt;br /&gt;&lt;/div&gt;&lt;p&gt;  &lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TB-8ZDCiWyI/AAAAAAAACt8/lYzsiOZRPC4/ikj.png"&gt;&lt;img style="border-width: 0px; display: inline;" title="image" alt="image" src="http://lh3.ggpht.com/_8qQpVjicx4A/TDH0iLTRmEI/AAAAAAAACvQ/iIdtQC7R8YE/image26%5B3%5D.png?imgmax=800" border="0" height="768" width="154" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;這幾種抓取資料的方法，提供大家參考一下，有啥問題也可提出來一起討論看看..&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-8397884181155166809?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/8UrRL0Re5QY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/8397884181155166809/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=8397884181155166809" title="0 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/8397884181155166809?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/8397884181155166809?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/8UrRL0Re5QY/table.html" title="抓取關聯 Table 的資料" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_8qQpVjicx4A/TB-6IDgumnI/AAAAAAAACtI/DyTexHvmoJg/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://bibby.be/2010/06/table.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8NRHwyfyp7ImA9WxFVGUo.&quot;"><id>tag:blogger.com,1999:blog-32055966.post-4067651437531751238</id><published>2010-06-20T01:24:00.007+08:00</published><updated>2010-06-20T03:48:15.297+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-20T03:48:15.297+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="亂七八糟" /><title>天外飛來一個鍵盤（FILCO N-Key rollover 青軸黑色機械式鍵盤）</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YEmBOy0obLXhZe7vlVsMHtQxAUg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YEmBOy0obLXhZe7vlVsMHtQxAUg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YEmBOy0obLXhZe7vlVsMHtQxAUg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YEmBOy0obLXhZe7vlVsMHtQxAUg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;今天騎車下班，遇到一個個好心的人給我塞給我一個鍵盤，說可以給我&lt;span style="color: red;"&gt;無限期&lt;/span&gt;試用一下，心想一個鍵盤有啥好囂張的，鍵盤不過只是一個鍵盤，能有多誇張，打開一看，好像有點與眾不同，黑黑的，拿起來有點給它沉重，話說沒圖沒真相啦（鄉民都是這樣說的），馬上貼幾張圖給大家聞香一下..&lt;br /&gt;
&lt;br /&gt;
開箱照..黑漆漆的一片..&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh4.ggpht.com/_8qQpVjicx4A/TBz9ED_zIaI/AAAAAAAACsk/4PMpnmcLgXU/s1600-h/IMGP5678%5B4%5D.jpg"&gt;&lt;img alt="IMGP5678" border="0" height="480" src="http://lh5.ggpht.com/_8qQpVjicx4A/TBz9FSRTsmI/AAAAAAAACso/uC9JZVJvuUs/IMGP5678_thumb%5B2%5D.jpg?imgmax=800" style="border: 0px none; display: inline;" title="IMGP5678" width="630" /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
靠近一點..奇怪..還是黑黑的..&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TBz9GREbO4I/AAAAAAAACss/vi2iDbO4hDM/s1600-h/IMGP5679%5B4%5D.jpg"&gt;&lt;img alt="IMGP5679" border="0" height="480" src="http://lh5.ggpht.com/_8qQpVjicx4A/TBz9HLAsqsI/AAAAAAAACsw/S8ih_51jdq4/IMGP5679_thumb%5B2%5D.jpg?imgmax=800" style="border: 0px none; display: inline;" title="IMGP5679" width="630" /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
斜看一下..還是黑色的..這鍵盤不會是傳說的說無痕鍵盤吧..哇哩勒..還好我會盲打..不然就被裝笑為了..&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/_8qQpVjicx4A/TBz9IsDyLkI/AAAAAAAACs0/N20gY9Ut5u4/s1600-h/IMGP5680%5B4%5D.jpg"&gt;&lt;img alt="IMGP5680" border="0" height="480" src="http://lh4.ggpht.com/_8qQpVjicx4A/TBz9J394nOI/AAAAAAAACs4/pLBIymkrE1E/IMGP5680_thumb%5B2%5D.jpg?imgmax=800" style="border: 0px none; display: inline;" title="IMGP5680" width="630" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
買上拿這個鍵盤給它試用一下，切切切切切...好爽快的聲音阿，打起來好像在敲東西一樣，有說不出來的感覺，爽度無限上升，每敲一下鍵盤，就有響亮清脆的聲音，連打錯字心情也很 high，打下去的觸感跟我之前用的Logitech組裝用500塊鍵盤，真的有天殺的不同阿，馬滴..忽然感覺好像上當了，以後口味改不回來怎麼辦..&amp;gt;_&amp;lt;..&lt;br /&gt;
馬上 google 一下這鍵盤到底是何方神聖，查查查..找到了..&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/_8qQpVjicx4A/TBz9KuN7c7I/AAAAAAAACs8/4AmrfXtQoEQ/s1600-h/image%5B10%5D.png"&gt;&lt;img alt="image" border="0" height="396" src="http://lh4.ggpht.com/_8qQpVjicx4A/TBz9LwtEsbI/AAAAAAAACtA/CQ1zgy3mu0g/image_thumb%5B6%5D.png?imgmax=800" style="border: 0px none; display: inline;" title="image" width="604" /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
一＿一||..果真是高級貨，這隻在 pchome 裡面的是有刻痕的，而我手上這隻還是無痕的說..馬滴..看來我又心動了..暗暗暗暗暗暗..&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: red;"&gt;--------更新-------&lt;/div&gt;經高人提示..應該是下面這個網址..才是此鍵盤的介紹..&lt;br /&gt;
&lt;a href="http://www.filco.com.tw/product.php?page_id=23&amp;amp;product_id=30"&gt;http://www.filco.com.tw/product.php?page_id=23&amp;amp;product_id=30&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32055966-4067651437531751238?l=bibby.be' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SimpleThoughtsOnEverything/~4/1FbphFY5oIE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://bibby.be/feeds/4067651437531751238/comments/default" title="張貼意見" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=32055966&amp;postID=4067651437531751238" title="1 個意見" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/4067651437531751238?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/32055966/posts/default/4067651437531751238?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SimpleThoughtsOnEverything/~3/1FbphFY5oIE/filco-majestouch.html" title="天外飛來一個鍵盤（FILCO N-Key rollover 青軸黑色機械式鍵盤）" /><author><name>Bibby</name><uri>http://www.blogger.com/profile/10860610215776367043</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://2.bp.blogspot.com/_8qQpVjicx4A/SUJaNAGFdiI/AAAAAAAABY8/nn7JfgDZnsc/S220/me3.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_8qQpVjicx4A/TBz9FSRTsmI/AAAAAAAACso/uC9JZVJvuUs/s72-c/IMGP5678_thumb%5B2%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://bibby.be/2010/06/filco-majestouch.html</feedburner:origLink></entry></feed>

