(.NET)ASP.NET
ASP.NET相關文章
承繼之前的系統分層概念,在資料存取層中,應該只有資料的存取,沒有商業的邏輯。小喵之前的系統並沒有這一層,以往都是商業邏輯混搭資料存取。這一篇就來嘗試撰寫資料的存取層。順便開始程式撰寫部分的介紹。
今天同事問小喵一個問題,他說小喵之前改給他用的【民國年挑選日期(請參考這一篇[jQuery]挑選日期的好物 jQuery Plugin [dynDateTime]中文化特別處理)】,這讓小喵很好奇,為何不能用,一看之下,原來之前asp的寫法會用迴圈產生input,並且有相同的Id。本來的語法如下就失效囉
承繼上篇【COM+的交易(Transaction)讓商業層確保資料的完整性】說明了COM+支援異動的方式與特性。本篇要介紹如何讓COM+執行較長時間的異動。
承繼之前的【淺談多層式架構 (Multi Tiers)】與【透過COM+來變身(切換身分)執行】。我們這一篇要來講COM+中小喵覺得最精華的部分--COM+的【交易(Transaction)】支援。再分析系統後,我們可能會將各式各樣的商業邏輯寫成Function放在不同的Project裡面的Class中,並且會互相呼叫來完成要進行的商業邏輯。而在互相呼叫的過程中,就可能有必要將彼此包在一個Transaction中。我們這篇就是要來講不同的元件中的相互呼叫時,如何包起Transaction的各種方式。
上一篇修練營文章【[修練營ASP.NET]淺談多層式架構 (Multi Tiers)】裡面,講到系統分層架構的時候,小喵提到COM+這個撰寫的方式。這一篇就來針對COM+作進一步的介紹如何讓ASP.NET透過呼叫COM+,變身為另一個身分執行COM+程式。
電視或電影中,很多XX超人、XX戰隊,如果要展現出超人能力時,總是會來個變身。這麼神奇,換個服裝,能力就大大的不同了。著名的卡通七龍珠,悟空也是變身為超級賽亞人後,打倒弗力沙。變身這個名詞,代表著能力的提升與身分的切換。這篇裡面,要講的,跟這個很像,讓ASP.NET運作的時候,來個【超級變身】,提升它的能力。
[修練營ASP.NET]淺談多層式架構 (Multi Tiers)
修練營初篇,介紹一般的架構,到中間層架構,到三層架構,以及多層架構。並說明虛擬多層與實體多層的概念。
[ASP.NET]幫助初學者建立連接字串(Connection String)的兩種方式(含影片教學)
剛好在MSDN論壇中看到有人問了這麼個問題,還蠻有趣的,因此小喵就動手嘗試寫看看。這裡面用到了【TreeView結合資料庫】與【client端呼叫Server端事件的技巧】,另外在【TreeNode】沒有Attributes來設定Client端事件時,加入Client端事件的技巧。
ASP.NET 2.0 怎麼建置會員機制,這個問題幾乎每隔一段時間就會在討論區中被人提起。小喵利用這個機會把以前寫過的文章整理一下,依照由淺而深的方式來學。
在ASP.NET 2.0以後,有了一套的登入驗證與授權機制。(請參考小喵這篇【ASP.NET的驗證與授權機制(動態錄影說明)】)其中預設的密碼必須要英數混合,並且需要一個非英數的特別符號,而且至少要有7位。這樣的密碼才能吃得進去,當然這樣的機制是為了要增加密碼的安全性,避免別人用機器人程式來猜出您的密碼。不過如果內部的系統想要簡單一些,其實也可以透過設定Web.Config的方式來改變他的規則。
當一個新的功能出來時,小喵不免會去開始想,這個功能小喵的系統應該怎麼應用上去。IE8裡面,除了加強了搜尋的功能,提供視覺化搜尋外,在IE8中還新增加了好東西,這東西叫做【加速器(Accelerator)】。這篇就來介紹如何開發自己網站,並且支援【預覽功能】的加速器...
承繼上篇【[IE8]搜尋功能介紹】,IE8新增了視覺式搜尋的功能。當小喵看到這個功能之後,身為Web App Developer的小喵不禁開始想,如果小喵的系統,也能夠提供這樣的功能給使用者,該有多好。於是小喵開始搜尋撰寫這樣功能的各項資訊。終於,找出撰寫的方式...
承接上一篇【如何透過JavaScript來觸發LinkButton的PostBack,呼叫後端的程式】,這一篇就利用那個技巧,來實現在GridView中,點選Row的任一位置,就可以選擇該Row。
這一篇最終的目的,是希望能夠透過JavaScript來觸發Server端的Function來做一些事情,在這個過程中,我們透過觀察LinkButton的PostBack運作,進而想出如何使用JavaScript利用LinkButton的PostBack來達到這樣的目的。
使用GridView一陣子後,應該或多或少會遇到這樣的需求,就是某些重複出現的Row希望能夠做RowSpan的合併動作,網路上要找這樣的解決方式應該還蠻容易的。不過既然是可能經常會用到的東西,不如把她抽出來寫成公用的Function,未來需要的時候,呼叫該Function直接處理就好
這一篇是強迫不使用DataSource(SqlDatasouce,ObjectDataSouce,AccessDataSource,...)的情況下,透過ADO的存取資料庫,以及GridView的各個事件,來理解GridView的一些運作狀況。小喵會在這篇中,寫下有關GridView的資料繫結、編輯、修改、刪除、排序、分頁等功能的程式碼。
[轉貼]上傳檔案前,JavaScript檢查檔案格式、大小
摘要:[轉貼]ASP.NET 組態檔階層架構和繼承
在GridView中使用CSS固定上、左表頭(似Excel凍結視窗)(限IE)
使用半透明的Div遮蓋表單防止重複送出(Submit)範例
Silverlight 2 Control Toolkit 初體驗(安裝錄影教學)
這篇文章包含了小喵參加TechEd 2008的心情,以及各項課程(SQL2008,.NET Famework3.5,IE8,Silverlight 2)的一些會後整理。想想多多少少還有點參考價值,所以放到首頁來了
VS提供可以存放程式碼片段(相關步驟請參考大鈞Dotjum的一篇VS.NET 裝上 程式碼片段 (Code Snippet )),讓我們把常用的一些片段程式可以方便使用。本篇則是介紹另一個,使用【工具箱】來存放常用程式碼片段的方式。存放的程式碼,可以自行定義索引區塊,小喵在此舉常用的一些ADO.NET語法片段來當作範例
TextBox在Client端Onfocus的時候,游標停留在最後一個字後面
本篇開始介紹如何將【畫面結構】設定與【角色/使用者】設定結合。用以設定【授權】
角色/使用者→畫面:角色/使用者擁有哪些畫面的權限
畫面→角色/使用者:一個畫面,對於眾多角色/使用者的權限設定
使用ADO.NET動態設定GridView資料的排序範例
上次提到jQuery開始勾引小喵後,在開發過程中,總覺得少了些什麼。沒錯,在被VS的Intellisense寵壞後的小喵,沒有這個實在有點痛苦。之前網友有篇在VS 2008 使用JQuery 自動提示( Intellisense) 提到不過在中文的VS2008還是無法使用。不過自從更新了SP1後,這一切問題改善了。
有次小喵剛好要買幾本書,在逛【書店】的時候的時候(小喵目前已經很少跑真正的書店,逛得只是書店的網站),還差一點就可免運費,所以順便找找看是否有什麼新書可以買。剛好看到jQuery有本新的中文書出版。於是小喵就把它放入購物車。從此開始與jQuery結緣。本來買了書後,打算先翻翻看看這個東西到底是什麼,能讓黑暗執行緒大大隊ASP.NET AJAX Client Library發出好人卡。沒想到這個迷死人不償命的小寶貝,竟然開始勾引小喵。
小喵寫這篇是源自於小喵上一篇文章【物件Object的New,Dispose與Connection的Open,Close概念分享】,小喵最後描述【當物件Dispose的時候,並沒有把該段記憶體清空,只是標註,這段空間不再使用,直到GC啟動把他清空才算真正的清空。】。但是小喵看一些網路文章時,有些卻提到當呼叫Dispose的時候,記憶體立即釋放。因此小喵就做這個測試來看看到底是怎麼回事。
這個功能應該蠻多人會用到的,在GridView的某一筆資料點選【編輯】之後,希望能夠用下拉選取的方式選擇資料,然後按下更新後,可以將下拉後的選項更新到資料庫
全部過程都用設定的方式,並不需要寫任何程式碼,適合初學者學習。
物件Object的New,Dispose與Connection的Open,Close概念分享
經常遇到一些人寫成是因為沒有New造成程式錯誤,另外對於Connection的New,Dispose,Open,Close概念也不是很清楚。小喵本篇就小喵自己的認知來說明這些東西的意義
承繼上篇【ObjectDataSouce簡介Part1:兼具ADO.NET的自由與DataSouce的方便】,我們這篇就來拿個實際範例,告訴各位如何撰寫相關的程式。
一般市面上介紹的書籍,大部分都會從SqlDataSouce與GridView,DetailView等DataControl來介紹,當然這些東西很方便,可以在最少的程式碼的情況下,做出新增修改刪除查詢。但是,事實上在專案開發下並非如想像中這麼美好,您不會永遠都是處理單一資料表的新增修改刪除查詢。當遇到要處理兩個資料表以上的時候,又該如何呢??
在ASP.NET 2.0裡面多了一個ObjectDataSouce,這個東西可以讓我們在處理資料的時候,可以透過自己寫的程式,或者已經開發好的物件來撰寫。
小喵以前撰寫ObjectDataSouce都是透過DataSet,DataTable,DataReader的方式傳回值,而要進行維護的動作,也是一個一個的參數慢慢傳遞,後來小喵看到Jeff大大的這篇文章【ObjectDataSoruce 繫結 BusinessObject 控制項】,原來可以用物件的方式來傳遞,於是小喵今天開始著手看看是否能夠改用物件的方式處理。
資料表設計經常會有Head,Detail的設計,拿最普遍的範例(北風資料庫)來看。訂單就有分為訂單Head檔(Orders)與訂單Detail明細(Order Details)這兩個資料表。當然這樣的資料表示有關係的,已訂單為例的話,關係就是訂單編號(OrderID)
那麼如何在畫面上展現這樣的資料呢,小喵整理以下幾種
ASP.NET方便套用一致外表的Skin(Theme)(動態錄影教學)
小喵錄製個動態教學,透過這個動態教學將可以學到
如何建立Theme,Skin
如何套用Page的Theme設定與Skin的關係
如何設定全部的Page套用相同的Theme
如何動態的更改SkinID達到動態的變更Skin
其實這個問題並不難
比較麻煩的是一般人可能不知道如何設定【物件中的物件】如何去設定他的事件。
以這個範例為例...
緣起
承繼前兩篇,從第一篇的【願景】,與第二篇的【樹狀結構畫面維護】,這一篇來談談如何處理角色的部分。角色的意義,請參考小喵第一篇【ASP.NET進階權限控管-Part 1 願景】裡面的說明,這裡就不再贅述了。直接進入到角色的定義、以及角色←→使用者之間的關係如何維護。
先從角色的定義來談起,先看一下角色的欄位說明
在使用WebUserControl的時候,如果一個畫面有數個WebUserControl的話,他們彼此間要怎麼溝通呢,也許有人說,使用FindControl/Property啊!!的確,小喵以前是這樣處理的,不過小喵卻發現這會讓WebUserControl在程式撰寫上變得複雜,既然要寫成WebUserControl,就是要把這些東西抽出來獨立處理/重複使用。但是如果寫的過程讓他與別的東西關係太密切,那就失去了抽出獨立處理/重複使用的目的。
再一次偶然的機會與熱心的Allen大聊到了物件(物件小喵一直都還在學),Allen大十分熱心的提示小喵可以用Interface來解決這類的問題。後來小喵在Allen大的文章也找到相關的範例與影片教學。不過範例是C#的,小喵用VB.NET來說明一次。
摘要:線上C#(CSharp)與VB.NET互轉的網站
在網路上看使用者發問的時候,還有很多從ASP剛轉換ASP.NET的開發人員,在使用者驗證與畫面授權上,還是沿襲著以往的Session驗證的方式。其實在ASP.NET裡面就有一整套完整的驗證與授權機制。使用內建的機制可以更簡單的就能夠做到【登入驗證】與【資料夾授權】的功能。透過這篇文章,希望讀者可以學到驗證授權機制、如何搭配自己的資料庫,做到相同的驗證機制。
小喵在開發系統過程中,經常會去查詢資料庫Table的Layout,一般來說會把他做成額外的文件,例如用Excel把Table的Layout打在上面,不過這個會有個問題,當資料庫Layout變動的時候,如果忘記去修改Excel文件中的Layout,那麼久而久之就會造成困擾(看到的文件與實際資料庫的不符合)
因此小喵特別設計一個
承繼上一篇【確保交易的新利器(TransactionScope)初體驗-Part 1(注意Scope.Complete的位置)】接著小喵有興趣的事,現在很多人開始使用OOP設計系統,那麼在一個商業邏輯中,透過兩個以上的物件來分別維護數個資料,在這樣的過程中,又如何確保交易的完整性呢。
於是小喵再次撰寫個物件來做個測試,這次
從.NET Framework 2.0以後,有個新的東西稱之為TransactionScope,他可以讓我們在處理交易的時候,可以確保交易的完整性,並且使用十分的簡便,小喵在此測試一下他的撰寫方式與結果,在測試過程中,驚人的發現了MSDN的一個錯誤內容。
繼承上一篇的願景【ASP.NET進階權限控管-Part 1 願景】,接著這篇先來講講一些基本的部分。
首先是【登入結合自己的資料庫】,以及【TreeView樹狀結構結合資料庫】這兩個部分,由於小喵以前已經有文章說明了這兩個部分,所以在這邊也不贅述。請看考以下的這兩篇。
瞭解了上面的這些部分候,接著就是如何維護樹狀結構,看一下維護運作的畫面先
這個主題小喵一直以來一直想要做分享,但是又不知從何分享起,因為小喵的這套機制有點點複雜,他除了可以結合自定資料庫的使用者登入、角色概念外,還搭配了TreeView與資料庫結合,等等的技術。算是一個還蠻進階的運用。相關的介紹可能不是一兩篇Blog能夠介紹完。到底要多少篇小喵也不曉得...就從小喵希望達到的願景(事實上已經達到並上線使用中)開始介紹起。
有時候希望多筆顯示訂單,但是訂單Orders、訂單明細OrderDetail可能分屬於不同的資料表中,因此如果多筆顯示的時候,就可以使用這個【巢狀GridView】的技巧。
這個範例會說明三個東西:
1.DropDownList與GridView互動
2.巢狀GridView的設計
3.透過RowDataView使用欄位名稱取得GridView某欄位的內容
Full (.NET)ASP.NET Archive