發表文章

目前顯示的是 10月, 2007的文章

如何在ASP.NET中下載檔案

  這是筆者常被問到的一個問題,如何透過ASP.NET來下載檔案,這個問題可大可小,我們先從小的開始。當我們要讓使用者下載一個檔案,最簡單的方式是透過Response.Redirect指令:    Response.Redirect("test.doc")   您可以把上面這行指令放在Button的Click事件當中,當使用者按下按鈕之後,網頁就會被轉址到該word檔,造成下載的效果。   但是這樣的下載有幾個問題: 無法下載不存在的檔案:例如,我們若是想把程式動態(臨時)產生的文字,當作一個檔案下載的時候(也就是該檔案其實原先並不是真的存在,而是動態產生的),就無法下載。 無法下載儲存於資料庫中的檔案:這是類似的問題,該檔案並沒有真的存在,只是被存放在資料庫中的某個位置(某筆記錄中的某個欄位)的時候,就無法下載。 無法下載不存在於Web資料夾中的檔案:檔案確實存在,但該資料夾並不是可以分享出來的Web資料夾,例如,該檔案的位置在C:\winnt,您總不會想要把該資料夾當作Web資料夾吧?這時候,由於您無法使用Redirect指向該位置,所以無法下載。 下載檔案後,原本的頁面將會消失。   典型的狀況是,我們要讓使用者下載一個.txt文字檔,或是.csv格式的Excel檔案,但是... 這個檔案可能是透過ASP.NET程式動態產生的,而不是確實存在於Server端的檔案; 或是它雖然存在於伺服器端的某個實體位置,但我們並不想暴露這個位置(如果這個位置公開,很可能沒有權限的使用者也可以在網址列上輸入URL直接取得!!!) 或是這個位置並不在網站虛擬路徑所在的資料夾中。(例如C:\Windows\System32...)   這時候,我們就得採用不同的方式: Shared Function DownloadFile(ByVal WebForm As System.Web.UI.Page, ByVal FileNameWhenUserDownload As String, ByVal FileBody As String)   WebForm.Response.ClearHeaders()   WebForm.Response.Clear()   WebForm.Response.Expires = 0   WebForm.Response.Buffe

教學影片:如何建立Silveright圖示選單(Silverlight的滑鼠事件功能介紹)

[ 線上瀏覽 ] 內容: 1.Blend2的使用方式(場景設計) 2.如何透過Blend 2建立Xaml Code與圖片(半透明設定) 3.如何使用Xaml控制項將Blend 2建立出的Xaml Code與ASP.NET頁面配合 4.撰寫簡單的JavaScript以建立圖示選單 [ 線上瀏覽 ] 資料來源: Silverlight權威講座--ASP.NET整合秘技與獨家案例剖析(董大偉 - 旗標) (書上的影片更完整唷...^_^)

Silverlight權威講座 完整介紹 與 目錄

圖片
Silverlight權威講座 完整介紹 [ 介紹 ] [ 序 ] [博客來網路書店] [天瓏書店] [ 目錄 ]

Silverlight研討會範例

圖片
感謝大家來參加10/24,25的微軟TechNET研討會 底下為研討會範例Silverlight家庭劇院組的原始程式碼下載連結。 您可以隨意的將這個範例應用在您自己的網站或是專案當中... [ 下載 ] [ 線上檢視 ] [ 線上檢視大頻寬版 ] enjoy~ 再加一個25號當天現場作的簡單的 圖示選單 功能 [ 下載 ] [教學影片: 如何設計 ]

微軟研討會:點亮黯淡無光網頁的新技術 - Silverlight

來參加微軟研討會吧... 10/24 高雄 漢來飯店 金鳳廳 9 樓 10/25 台北 台灣微軟 7A/7B 1.Silverlight精彩範例程式碼完全剖析 → 廣告Banner, 動態圖表, RIA應用程式, 音樂故事,  家庭劇院 ( 線上瀏覽電影預告片版本 建議先打開右下角電源開關 ,另外,因影片檔較大,若影片中斷請待載入完畢後再瀏覽 ,若您的網路速度不是非常快,也只是想看一下UI,請點選 小影片檔案版本 ) 2.首度公開DynamicXaml控制項 3.新書內容發表 (微軟研討會 相關連結 )

Silverlight新書上市 - Silverlight權威講座 - 現正熱賣中

圖片
[博客來網路書店] [天瓏書店]   這本書,著實花了筆者不少時間。   從今年七月開始,筆者在台北、台中、高雄分別主講了十多數場微軟Silverlight相關的研討會與Hands On Lab,連TechED 2007也是以Silverlight為主題。   微軟更是花大錢擺大陣仗來推廣這個新技術。當然囉,您可以慢慢嗅出接下來的Web技術主流在哪裡了...   躬逢其盛,當然也不能缺席,沒有搶先在第一時間出版Silverlight的書籍(再一次向讀者說聲抱歉),實在是因為要整理太多的內容,一個新的技術,怎麼和過去我們所熟悉的ASP.NET來整合,是筆者比較關心的主題。也因此,您會看到在這本書當中,把最主要的內容鎖定在這個部份,在ASP.NET和Silverlight的整合議題當中,實在有太多太重要的內容需要向讀者介紹。(當然,我們也沒有忘記為讀者介紹Xaml與SOM)   如果沒有ASP.NET的配合,Silverlight充其量也只會是Flash的另一個競爭對手(不過說實在的,這部份幾乎都是交由Designer來做,而非Developer來做,和開發人員相關性較低),但是加上了JavaScript、ASP.NET、ASP.NET AJAX技術之後,Silverlight搖身一變成為ASP.NET開發人員提升你的Web應用程式功能面和操作介面的一大利器。(對,其實還有功能面的提升,別以為Silverlight只能做UI...)   同時,為了降低開發人員的進入門檻,我們特別為讀者打造了 DynamicXaml 控制項,免除 ASP.NET 程式員耗費時間學習 XAML 與 JavaScript,更進一步與 ASP.NET Ajax 技術整合,處理前端事件,讓 Silverlight 不只是絢麗的外表,還能真正應用到實務的程式中。透過 DynamicXaml 控制項,ASP.NET的開發人員即使不熟JavaScript、不會ASP.NET AJAX,都可以輕鬆的完成高階的Silverlight RIA應用程式(Rich Internet/Interactive Application)。   說真的,就算ASP.NET開發人員只是為了一個動態圖表產生的機制,都值得您透過本書當中所介紹的 DynamicXaml 控制項來完成,Silverlight技術其實相當好用。

Silverlight權威講座 - 新書序

圖片
  技術的更迭總是快得令人目不暇給,在資訊產業當中,知識的生命週期比其他行業要來得短很多,我想這已經是大半跟筆者一樣的資訊技術人員早已知道的事情;每隔幾年,您手上熟悉的開發工具或是技術就要全面翻新一次,速度之快,幾乎可以用匪夷所思來形容。   今年(2007)三月,我們才剛從AJAX的風暴中走來,隨著一堆像是『Web 2.0』之類的新名詞的推波助瀾,這些新技術所帶給開發人員的,早已經從對新技術的期待與興奮,慢慢地轉變成對新技術的恐慌。   不知道您有沒有這種感覺(我是一直感受深刻),Thomas Friedman在The World is Flat一書當中,對全球化競爭與替代的描述,在軟體業似乎比其他產業來得更早發生,我們生在這個時代,目睹很多產業的外移,特別是電子製造業 – 這個過去台灣軟體產業的最大客戶。 軟體產業很特別,因為你的產品是虛擬的,沒有形體,可以在網際網路之間傳遞,這也表示,開發人員可以在世界的各個角落,只要經過適當的規劃、組織、遠端的兩三個團隊彼此要分工合作並非不可能。   距離當下消失!!!   從管理面來看,當距離成本極小化時,工作會自然地流向成本最低、效益與產值最高的地方。果然,這就是現在台灣軟體產業正在發生的現象。 兩岸是否三通早已不是重點,軟體開發的工作可以在遠端完成(所花費的管理成本相較其他產業是來得低的),這表示競爭立刻面對全球化的挑戰,由於資訊透明度極高,價格與品質必須攤在陽光下;現在我幾乎買任何的電子產品,都會先上拍賣或是購物網站找到最低價,並且比較規格,往往最後的採購結果價格與品質都相當令我滿意。   資訊透明,對買方來說相對有利…   從職場的角度來看,提供服務的賣方(每一個工作者),慢慢也被透明的攤開在全球化的競爭之下,你的個人專業能力、學習能力…再也不只是跟Local同一塊區域的對手競爭,而是逐漸被拉到全球市場上競爭,就算外籍工作者目前無法直接來台灣長時間工作,但真有必要時,專案依舊可以從台灣發包到大陸或是印度,有效的降低成本。   我要說的是,當距離不是問題,直接的競爭力就更是關鍵…。所有事情都有一體兩面,這表示如果你夠強、產品品質夠好、成本夠低,你比過去時代的人更有機會可以一口氣吃下全球的市場;但是反過來看,你也被迫要讓自己(或自己的產品)在全球上競爭,國界和距離慢慢無法保護你不遭受遠方競爭者的攻擊。   就工作者的角

教學影片:如何利用Blend2設計Silverlight並配合ASP.NET

[ 線上瀏覽 ] 內容: 1.Blend2的使用方式 2.如何透過Blend 2建立Xaml Code與動畫 3.如何使用Xaml控制項將Blend 2建立出的Xaml Code與ASP.NET頁面配合 4.如何撰寫簡單的JavaScript達成使用者互動 [ 線上瀏覽 ] 資料來源: Silverlight權威講座--ASP.NET整合秘技與獨家案例剖析(董大偉 - 旗標) (書上的影片更完整唷...^_^)

教學影片:如何在Silveright當中建立按鈕

如何在Silveright當中建立按鈕 - 1 [ 線上瀏覽 ] 如何在Silveright當中建立按鈕 - 2 [ 線上瀏覽 ] 資料來源: Silverlight權威講座--ASP.NET整合秘技與獨家案例剖析(董大偉 - 旗標) (書上的影片更完整唷...^_^)

Way back into love

這首歌是 休葛蘭 在K歌情人(Music And Lyrics)中的一首歌,放上來,只是因為覺得好聽... 然後很有趣,我在找這首歌的MV時,找到了一個網站叫做 CSI:GSR - CSI我知道,那...GSR是什麼呢??? 後來我終於懂了^_^...請拖曳到下面...看另一支video...(很有趣) I`ve been living with a shadow overhead 我終日生活在陰影中 I`ve been sleeping with a cloud above my bed 就連睡在床上;烏雲也是緊跟不放 I`ve been lonely for so long 我已經孤單寂寞了好久 Trapped in the past, I just can`t seem to move on 不斷漫遊在過去,卻一直沒有機會向前行 I`ve been hiding all my hopes and dreams away 我把所有的希望及夢想藏匿 Just in case I ever need em again someday 只是為了今後我還有機會需要它們 I`ve been setting aside time 我努力爭取時間 To clear a little space in the corners of my mind 為了能保持我心中一塊小小的角落能夠潔淨無瑕 All I want to do is find a way back into love 我只想盡一切可能,把愛找回來 I can`t make it through without a way back into love Oh oh oh 如果沒有了那份愛;我一定撐不過來 I`ve been watching but the stars refuse to shine 我一直在等待那不願閃亮的繁星 I`ve been searching but I just don`t see the signs 我一直在找尋,但卻毫無頭緒 I know that it`s out there 我知道它就在某處 There`s got to be something for my soul somewhere 在某處一定有著什麼力量能解放我的靈魂 I`ve been looking for someo

Silverlight的文字輸入功能

圖片
  眾所周知,在目前這個階段,Silverlight並沒有所謂的TextBox控制項可以輸入文字,因此,想要在Silverlight當中輸入文字必須使用ASP.NET的TextBox控制項來充當文字的輸入功能。   這部份該如何作呢?這就要討論到Xaml控制項的WindowsLess屬性了,其實該屬性是Xaml控制項當中相當重要的屬性之一,它讓ASP.NET的控制項與Silverlight之間可以彼此合作,例如下圖這樣的狀況:   上圖中的文字輸入功能,其實並非是Silverlight所提供的,如您所知,Silverlight目前並沒有所謂的控制項,因此也沒有辦法直接輸入文字,但是我們可以和ASP.NET的TextBox控制項加以配合,讓Silverlight模擬出輸入的功能。   其實設計的方式很簡單,我們只需要透過Blend2把外框先繪製好:   接著把xaml code引用至Xaml控制項中,然後關鍵的部份來了,請務必把Xaml控制項的WindowsLess屬性設為True,同時在Xaml控制項上『疊上』TextBox物件(注意要把TextBox的Style設為position: absolute且將ZIndex設為大於Xaml控制項,並透過『樣式』功能,把TextBox的邊框消除:   完成後,其HTML指令碼如下:   請注意,這個技巧在設計RIA時相當常見,讀者可參考書附光碟中的範例『SilverlightStudyHostCom\Demo\AniBackground\Default.aspx』來瞭解設計的方式。   我們未來會介紹如何透過這樣的方式,讓使用者在Silverlight介面上輸入文字,並透過AJAX技術傳遞給後端的ASP.NET程式。 資料來源: Silverlight權威講座--ASP.NET整合秘技與獨家案例剖析(董大偉 - 旗標)

以OpacityMask設計半透明遮罩

圖片
  OpcityMask是一個相當好用的屬性,透過OpcityMask與Brush的配合,您可以將任意圖性加上一個透明度遮罩,我們先看一個簡單的例子:   上圖左方是一個標準的圖形,而右方則是加上OpacityMask遮罩之後的結果,其Xaml碼如下:      您會發現,我們可以透過OpacityMask用筆刷來刷某一個元素,刷的方式是採反透明遮罩的方式。請參考下圖,假設原始圖案是最左方的圖形,而遮罩(Opacity Mask)若是下圖中間這樣,則刷出來的圖形則是下圖右方:   請參考範例( 下載 ),我們利用繪圖軟體建立了一個底下這樣的圖檔(名稱為OpacityMask.png): 然後撰寫底下的xaml碼:   呈現出的結果如下圖:   透過這樣的技術,我們可以輕易的在畫面上呈現出相當有美感的圖形,例如以特定的手繪的愛心外框,作為照片的遮罩,作出坊間影像處理特效。   不僅是圖形的部份,就算是影片,Silverlight也可以利用遮罩來呈現出特殊效果:   程式碼如下:   請讀者務必注意,用以作為遮罩的圖檔必須是支援透明背景的圖形格式(請特別注意是透明的圖片背景,而不是白色的圖片背景),讀者可參考書附光碟範例中的圖檔OpacityMask.png,以瞭解此格式。 本文範例( 下載 ) 資料來源: Silverlight權威講座--ASP.NET整合秘技與獨家案例剖析(董大偉 - 旗標)

Silverlight的開發工具

實在是太多人問到Sivlerlight的開發工具了,如果您現在要開發 Silverlight應用程式也好、RIA也好、想要在ASP.NET當中整合Silverlight也好,請安裝底下這些開發工具,注意,請依序安裝。底下說明每一個工具的用途以及為何需要安裝... 筆者建議您『務必依序』安裝底下套件: ◎ Visual Studio 2005 → 這個做什麼的不用說吧,請最好不要用Express版本 ◎ Silverlight 1.0 Run-time(Windows版本) → 用來將你的瀏覽器外掛Silverlight顯示功能 ◎ Visual Studio 2005 Services Pack 1 → 要先裝這個之後,後面Silvrlight 1.0 SDK才裝得起來) ◎ Silvrlight 1.0 SDK → 裝這個之後,VS2005中就會有 Silverlight 樣板專案(位於C#) ◎ ASP.NET AJAX 1.0 → 要先裝這個之後,後面的 Futures Release才裝得起來,而且,安裝之後,Silverlight 才能夠透過AJAX技術讀取後端資料庫 ◎ ASP.NET Futures Release → 讓ASP.NET可以輕鬆整合Silverlight ◎ .NET Framework 3.0(中文版) → 要先裝這個之後,後面的 Blend 2 才裝得起來 ◎ Expression Blend 2(英文版) → 該死的VS2005沒有所視即所得,所以需要用Blend 2幫開發人員用拖拉的方式設計Silverlight的UI(請參考此篇 此篇 文章),除非你的Xaml指令碼像奚同學一樣滾瓜爛熟。此軟體也三五不時有新版,請自己找一下... 完成之後即可開發各式各樣的Silverlight應用程式。 20080706更新Blend 2已經有正式版 下載

Keep Walking(轉貼去年寫的BLOG)

這篇文章,其實是去年12月寫的, 換了BLOG,但是捨不得丟掉,所以移過來... 從去年,到今年又改變很多了,VS2008又級將推出,時間過得真快...      昨天和一位同樣在資訊出版界的朋友小聊了一下,不知不覺的居然天色突然變暗,果然冬天來了,儘管今年是暖冬,不過天黑得還真快。三、四個小時中談到不少近十年資訊領域的變化,趁著記憶猶新,跟大家分享一下。   在我們那個年代,程式設計是從MS-DOS開始學起的,施威銘的『Assembly程式設計』大概是對我幫助最大的書。回想這10年,變化還真是大,十年的時間物件導向主宰了程式設計的走向,Design Pattern引領了程式設計師的大腦,Web應用程式經過了一段網路泡沫化的淬練之後,開始走上主流的康莊大道,兒時(真的是兒時)和我一起寫程式的聶哥現在不知道到什麼地方去了(我始終佩服可以在一片360k的磁片和有限的記憶體內寫程式的高手,聶哥如果看到這篇文章,跟我聯絡一下吧!)。   在我寫『Visual Basic2005程式設計與案例剖析』一書時,曾經很掙扎資料庫那一章的寫法,我究竟要不要把那一坨ADO.NET的類別詳細的介紹呢?還是用拖拉法把資料和控制項binding一下就搞定?最後我選擇前者而放棄後者,終究還是在書籍中稍微討論了一下ADO.NET的架構,儘管我猜想很多讀者可能會選擇直接跳過那一節,而直接使用我們幫讀者準備好的DbAccess類別,甚至可能某些讀者因為沒看到很炫的『拖拉完成式』程式設計法,以致於不選擇我的書…不過,好歹對得起自己的良心和讀者的支持。(當然,『Visual Basic2005程式設計與案例剖析』一書的資料庫章節僅是入門的入門,後續筆者會有更完整的資料庫程式設計書籍之計畫,相信不會讓讀者失望)   現在在.NET的架構底下,透過VS2005要完成一套系統已經相當簡單了,但是我們開始發現另一個問題,初學者慢慢的迷失在眾多炫麗的控制項和包裝好的機制底下,無法明白究竟電腦中的程式究竟是怎麼跑的,我們也發現不管是中英文書籍,介紹技巧(Skill)總是遠多過於技術的方法(know-how),可能讀者也會說,我管它這些東西是怎麼完成的,我能寫出一套系統(或完成作業)就好了啦,是沒錯,和過去15-20年前,我們還設法將程式盡量縮小,塞在1M的主記憶體當中,現在動輒以G計算的主記憶體和File Swap

Silverlight的 InLine Xaml 功能 - 讓您可輕易的動態產生Xaml碼

圖片
  過去我們一直都是透過.xaml檔案中的內容來設計Silverlight中的每一個元素的外觀長相,有沒有想過,如果需要動態的產生xaml碼,而不想透過.xaml檔案來完成的時候該怎麼辦?   有這種需要嗎?有的,而且對於ASP.NET開發人員來說,這類的需求俯拾皆是。   能夠先把.xaml檔案設計好,是我們假設早已經知道整個Silverlight功能要顯示的內容、圖形、或是動畫等資源的個數與位置,如果這些資訊事先都不知道,得要在執行階段以ASP.NET的程式碼來動態決定的時候,顯然就無法透過預先寫好的.xaml檔案來完成。   最典型的例子是『電子相簿』功能的Silverlight程式,當我們要寫一套程式來處理『網站上所有使用者』的電子相簿功能,每一個使用者的每一本相簿當然都會有不同的圖檔(相片),不可能都是固定的那幾張,所以圖檔的位置、個數,我們事先都不知道,在執行階段才有可能知道這些資訊,因此我們幾乎不可能事先寫好.xaml檔案,而是要在執行階段動態的產生.xaml碼的內容。   又或者,我們要用Silverlight建立一個動態選單,但是如果.xaml碼是固定的,那選單內的選項、層級、點選後的HyperLink位置顯然都無法任意調整,每次調整都要修改.xaml檔案,如此一來相當不方便。   如果我們可以動態產生.xaml檔案,就有著無限的可能性,像剛才提到的選單、電子相簿…等功能,我們都可以在ASP.NET程式的執行階段,動態決定其內容,甚至可以把Silverlight功能包裝在UserControl或是WebControl裡,如此一來,使用Silverlight就跟使用控制項一樣簡單。 由於上述種種原因,Silverlight的.xaml檔案必須動態產生的需求相當明顯。   在Silverlight 1.0正式版當中,動態產生xaml碼的功能有著相當不錯的簡單做法,我們稱之為『InLine Xaml』。   過去我們都是利用Blend 2或是Visual Studio 2005先寫好.xaml檔案,若是透過InLineXaml的方式,我們就不需要受這個限制了,請看底下的.aspx頁面:   透過這樣的方式,我們可以把Xaml碼寫在.aspx當中,就不需要再額外建立.xaml檔案了。   您可能會說,那這樣只是少寫一個.xaml檔案而已,跟『動態產生』Xa

Silverlight的中文顯示問題

圖片
  在Silverlight 1.0當中,中文字無法以內建的字型直接顯示,但您可以透過Blend 2在設計階段將文字轉換成Path,即可解決此問題。   操作步驟如下,請先透過TextBlock繪製好文字,接著點選主選單的『Object-->Path-->Convert to Path』:   Xaml碼會轉變成:   採用這個做法也有一個好處,您可以隨意的顯示任何字型,至於動態產生的字型,我們在後面談到ASP.NET與Sivlerlight整合時會繼續為讀者介紹。

Sivlerlight的開發工具 - VS2005還是Blend2

圖片
  Sivlerlight最近開始很紅囉, 可是您一定會覺得,在這個階段撰寫Xaml碼似乎有點辛苦,主要的原因是Visual Studio 2005雖然提供IntelliSense,但卻不支援所視即所得,而支援所視即所得的Blend2卻又不支援IntelliSense,動畫的設計在VS2005當中也不容易完成。   我自己在開發Silverlight網站或是應用程式時,都是透過Blend 2的拖曳功能來建立xaml碼和動畫Storyboard,但是同時間會一併開啟Visual Studio 2005,透過IntelliSense功能來編輯Xaml指令碼。   典型的做法如下,讀者可以在設計時Silverlight時,先開啟Blend2,在畫面上把Xaml元素或是相關的動畫佈置處理好,然後在Project視窗當中,按下滑鼠右鍵,點選『Edit in Visual Studio』:   接著系統就會自動開啟VS2005,讓您編輯『同一個專案』當中的檔案,在VS2005當中,就有IntelliSense可以使用了:   這樣的好處是,若您在VS2005環境當中改過了Xaml碼(因為VS2005支援IntelliSense所以改起來還蠻方便的),存檔之後切換回Blend2,會看到:   Blend2會主動發現該檔案已經被另一個(VS2005)程式修改過,並且問您是否要重新載入。這樣的功能相當方便好用,我們可以用兩個軟體同時編輯同一個.xaml檔案,又能夠保持一致性。   反之,當您在Blend2改過xaml code之後,切換到VS2005時,VS2005也會問一樣的問題:   這樣的功能讓VS2005和Blend2之間可以互相彌補彼此的不足,在這個階段不失為相當好的操作方式。