Mexx's profile我們走吧 我們回去PhotosBlogListsMore ![]() | Help |
|
October 21 開發Web專案與開發Web平台的差別 一個很大的差別,我想是順序! Web 專案,通常是美編設計師切好版面,再給工程師套程式、套控制項。 Web 平台,必須相反,先由工程師開發好所有可能的彈性與擴充,功能齊備之後,再和美編商討如何對版面客製化,討論客製化的過程,就會漸漸發現,其實你已經把自己當作使用平台的客戶了。 Web 專案開發的利潤收得很快,開發時程相對較短,但如果要專案之間互套程式,套到最後通常變成四不像,程式品質不佳。 Web 平台的初期開發時間相當長,也無利潤可言,但之後開始販賣時會輕鬆很多,錢收得更快,而且也比較不會因為持續改版導致程式亂七八糟。 這剛好回答了之前自己的問題:有沒有可能工程師先寫好程式,再交給美編設計套版?那就是 Web 平台的模式。 October 05 Validation of User Controls in ASP.Net 常用的控制項組合,我們會想把它包在一起,日後方便重複使用。 寫 Custom Control 太麻煩了,通常會用 User Control 快速達到我們的需要。 所以就會衍生出這個問題:如何驗證 User Control 的值?例如 User Control 裡頭的某個 TextBox? 首先談兩個觀念 第一是:User Control 包了若干個 Server Control ( or Html ) 之後,外界對它是一無所知的,只知道它是個 "UserControl" 類別˙。你必須為它設計一些「屬性」,把該 User Control 的特性給釋出來讓外界知道(讓 aspx 知道)。例如該 User Control 內含一個 TextBox,你若要在 aspx 可以存取該 TextBox 的值,可以設計一個屬性如下: public string Text { get { return this.TextBox1.Text; } set { this.TextBox1.Text = value; } } 相關的介面:ITextControl、IEditableTextControl,只要繼承了他們,就一定要有 Text 屬性。 第二個觀念是:"UserControl" 類別繼承了 INamingContainer,所以上面 TextBox1 Render 到前端後,不會仍然是 id="TextBox1" 以下還有一些常見問題:
接下來,就進入比較主題的部分,就是如何驗證 User Control 的屬性值?有兩個做法:
以下用 RequiredFieldValidator 舉例:
做到這邊其實可接受了,若你已經滿意,底下的就可以忽略不看。
嚴格來說,還是有點美中不足的:
September 13 HtmlInputFile、HttpPostedFile、FileUpload 在 ASP.Net 1.x 的時候,我們用 HTML File Field(HtmlInputFile) 手動設 runat="server" 做檔案上傳,要直接操作 HttpPostedFile。 到了 ASP.Net 2.0,新增了 FileUpload 伺服器控制項,包裝了一點點程式碼,我們不用再直接操作 HttpPostedFile,程式稍微簡潔了些。但是其內部還是在操作 HttpPostedFile。真正有價值的差異是 FileUpload 控制項的 FileBytes 屬性。 FileBytes 回傳的是 byte 陣列,等於是幫我們做了序列化,讓檔案上傳機制有了更多可能性,可以更方便的將檔案內容直接轉存到資料庫,或是將檔案傳遞給遠方 WebService 接收 ..... 還有 FileBytes 屬性被標記為 Bindable(true),更可以將 FileUpload 控制項輕鬆搭配資料繫結控制項(例如 FormView)、DataSource 控制項(例如 ObjectDataSource),作資料繫結,當然省了相當多程式碼。 ASP.Net 2.0 之後,建議用 FileUpload。 另外,網路上非常多文章說,HtmlInputFile 與 FileUpload 還有一個差異,就是後者會自動為 form 加上 enctype="multipart/form-data"。可是我印象中以前寫 ASP.Net 1.x 好多時間,從來沒手動幫 form 加這個屬性,HtmlInputFile 也都用得好好的。最近又用 VS2003 測試一下,發現 HtmlInputFile 只要設 runat="server",同樣會自動補上 enctype。不知是不是曾經有這問題,後來被修補了? 如果不設 runat="server",的確就不會加 enctype。(但是這樣一來,它還能幹嘛?) September 11 ASP.Net 2.0 Profile 宣告陣列欄位 <add name="NewColumn" type="System.Array" /> 這樣宣告是無效的! 因為 System.Array 是所有陣列的基底類別,只有系統或編譯器能明確繼承這個類別 你宣告的任何陣列都會被「偷偷的」繼承它,只是你看不到,所以忘了「System.Array 可以代表所有型別陣列」這件事 當你宣告 profile item 的型別是 System.Array,它根本不知道陣列元素的型別是什麼?(陣列初始化時,一定要知道型別) 你可以試試 System.Array 能不能用 new 的語法直接初始化為特定型別,答案是不行的! 至於 ArrayList 則不是陣列,而是集合,它的每個成員都是 object 類別,相當明確 (雖然 object 也可以代表所有東西,但 profile 機制至少知道它是 object 類別,至於到底儲存什麼東西?那是序列化的問題) 因此這樣宣告沒問題: <add name="NewColumn" type="System.Collections.ArrayList" /> 而宣告陣列的正確語法則是: <add name="NewColumn" type="System.Int32[]" /> <add name="NewColumn" type="System.String[]" /> 以此類推 ASP.Net 2.0 授權實作 目標:使用者驗證通過之後,對頁面或目錄的存取授權 應用:登入後端的使用者,不見得可以管理所有的系統,這很常見;建立使用者的時候,要順便勾選該使用者可以存取的系統 .....諸如此類 假設你有一個資料表儲存後端系統架構和路徑,那麼最簡單的做法,當然就是 ASP.Net 2.0 的 Profile 機制:利用 Profile 替使用者加個欄位,儲存該使用者授權存取的系統代碼,之後就可以在頁面中拿來當作授權之用。可參考聖殿祭司的「ASP.Net 2.0 專家技術手冊」 另一個怪怪的做法,是利用標準的授權機制,也就是 web.config 的 authorization 項目,ASP.Net 的網站管理工具其實也是透過它來做授權 ....... 但我個人覺得,重看不重用:P
所以如果是小網站,他真的是滿方便的! 作法就是
August 21 工程師的樂觀與悲觀 我抱怨:剛出社會的時候,寫程式常常被催,公司又想凹你;三十幾歲寫專案,功力更強了,還是常常被催,公司凹更大;四十幾歲當上主管了,變成老闆或客戶在催你,台灣的軟體工程師怎麼都這麼苦命? 我朋友笑得開懷:剛出社會上班吹冷氣;三十幾歲上班吹冷氣;四十幾歲還是在辦公室吹冷氣泡咖啡,多好! 她的回答讓我笑了!哈哈!真有意思! August 19 快速架站機,我的疑惑,想請教 市面上形形色色的快速架站軟體,或說網站內容管理系統(Content Management System) 例如,XOOPS、DotNetNuke、Joomla、Discuz、Drupal、SharePoint、WordPress、osCommerce、phpShop、PHP-Nuke ..... 為什麼還是有公司以 CMS 為主要產品線呢? 我不太懂這一塊有多大商機,有人願意指點我一下嗎? August 16 Windows Mobile 6.5 手機程式開發 - Widgets 安裝與開發教學,網路上就一堆文章可查了,這邊就不再囉唆。
August 13 愛打乒乓的人有這傾向 發現有人身穿「看似」選手運動服,例如黑色短褲 + 條紋運動衫,會有兩種心態
我。。。只不過是天氣太熱太悶,想穿涼爽一點打球 == August 10 原來回家也不容易 到了禮拜日中午,風雨明顯弱了很多,趁著這時候趕回去幫忙,沒想太多 結果本來要經過阿蓮,遠遠看到每輛車子都過去又折返,原來過去就是汪洋一片,上面還橫著一輛休旅車@@ 所以我就改向台南市這個方向,稍遠一點,但也是我熟悉的路 一路上常遇到爛泥濘,偶爾又來個大雨,心裡在想:不好!該不會等下又被水阻了?! 果然快到台南時,眼前又是一片湖海,又得改道了 還好這時候已經在台南縣,比較好摸索,我改騎向仁德 靠著路標糊裡糊塗摸索著回家的路 到永康時,又是一片@@ 但我看有人敢涉過去,有的人不敢,處在很間介的範圍,其中還有一輛機車! 喔~既然有人先騎給我看,說不定我也過得去 不然那邊路我不熟,改道的話又不知要繞道哪邊去 所以這次就勇敢的衝囉!哈!真是委屈我的小白了 August 07 Mom I want to go back to Tainan ..... Should I? You said you would take a break next year ... yes, you should do it! I hope I can help you mop the rooms, help you take out the garbage, help you wash the dishes, help you wash the clothes everyday. I can teach you what is "e-mail" again. I can teach you how to play photoshop. You said you work of a laborer from this month. Should I still stay here? I have direction, no answer ? but I just need a correct answer rightnow.... 太超過的重男輕女老人家重男輕女,難免啦
因此分家產的時候,刻意不分給女兒?喔 ... 摸摸鼻子吧 .....
但是都已經不分家產給女兒了,生活起居卻還要刻意幫省兒子的錢,只花女兒的錢,還疑心女兒污他的生活費
就算覺得女兒沒用,差別待遇也不需要這麼誇張吧。 |
||||
|
|