學習ASP.NET的體會(一) (轉)

worldblog發表於2008-01-11
學習ASP.NET的體會(一) (轉)[@more@] 

在中,整張頁是放在一張大表單裡面的。如:

********

網頁的具體內容……:namespace prefix = o ns = "urn:schemas--com::office" />

  在這個表單內可能放置了很多html如按鈕、下拉選單、文字框等。提供了一些端Web控制元件。在伺服器上的時候,透過一定的條件,Web窗體將這些伺服器Web控制元件轉換為普通的html控制元件。比如一個按鈕:

 

  經過轉換後就變成了:

  其實asp.net利用的還是現有的一些技術。只不過它對這些現有技術進行了封裝,使你在使用中將自己提高到了一個應用的層面上。

  在asp.net中,一個web窗體被看成了一個。它的資料成員就是那些Web控制元件和你自己定義的變數,它的成員就是那些用來響應客戶端操作的函式,當然還有你自己定義的函式。我大致講一下請求一張web頁的時候發生了一些什麼事件:

  說明:一張web頁由三個來實現:HTML、後臺程式碼、資原始檔。

  假定:web頁中有一個標籤控制元件和一個按鈕控制元件,在初始的時候,標籤控制元件的文字為:“初始”,當使用者點選按鈕以後,標籤控制元件的文字變為了:“點選”

  首先,使用者第一次請求頁面時,先執行web頁的Page_Init過程,在這裡通常對進行初始化。然後執行Page_Load過程,在這裡,我們可以做一些初始化的工作。比如:設定標籤控制元件的文字為:“初始”。然後,由於使用者是第一次請求頁面,所以沒有什麼其他事件發生。程式控制轉為解釋執行HTML內碼表中的伺服器程式碼。在HTML中,有一個

  現在,使用者對著按鈕點選了一下。於是,表單就提交了。(提交的細節,我下面再說)

  透過提交的表單,伺服器得知這是使用者點選了按鈕控制元件。並且這是使用者第二次請求該頁面了。於是,程式又執行Page_Init過程、Page_Load過程。這時,因為使用者點選了按鈕控制元件,則程式開始執行另一個函式,這個函式是用來專門處理使用者點選了按鈕控制元件這個事件的。在這裡,我們將標籤控制元件的文字設定為:“點選”。然後程式控制又轉到HTML頁。跟上面第一次請求時一樣。於是使用者在客戶端透過瀏覽器就可以看到一個“點選”和一個按鈕了。

  實際使用中,後臺的程式程式碼是被編譯成二進位制程式碼了的。

  下面說說提交表單的細節。

  使用者的操作通常會產生一些事件,但是都是一些客戶端事件。就是說這些跟伺服器是無關的。  要與伺服器取得聯絡就要透過請求。選擇了提交。

  在.net中,web窗體的內容都放在了一個大表單裡。對於按鈕,微軟都將它們轉換為了就是html裡的提交按鈕。因為每個按鈕的id、name不同,所以,伺服器可以分辨出使用者按的是哪一個按鈕,進而產生相應的伺服器事件。如上面例子裡的使用者點選按鈕事件。並進行相應的操作。對於其他的控制元件如下拉選單,如果希望在使用者改變了選單的選擇項以後由伺服器進行處理,則也需要將客戶端事件轉換為伺服器端事件。. net在表單裡新增了幾個。當使用者改變選單選擇項以後,會產生一個客戶端事件 onchange。微軟提供了一個通用的函式_dopostback(); 檢視網頁原始檔可以看到,在下拉選單裡有onchange="__doPostBack('Drop_subject','')"。下面是這個函式的原始碼:

function __doPostBack (eventTarget, eventArgument) {

  var theform = document.Form1;//Form1是表單的名字

    theform.__EVENTTARGET.value = eventTarget;// __EVENTTARGET是hidden

    theform.__EVENTARGUMENT.value = eventArgument;// __EVENTARGUMENT是hidden

    theform.submit();//提交表單

  }

其實您可以看到,.net是透過隱藏控制元件來傳遞客戶端資訊的,例如產生事件的控制元件的名字。然後,提交表單。這樣,伺服器端就可以根據隱藏控制元件來確定產生事件的控制元件的名字,併產生伺服器事件,進而對該事件進行處理。

  可以看到, Asp.net相對與asp 3.0不同的地方在於.net對很多功能進行了封裝,並且提供了很多新的伺服器元件。使得程式的編寫更加簡單。在asp3.0中,程式程式碼全部是嵌入HTML程式碼中的。好處在於靈活度較高,但是卻不容易在同一張網頁中加入很多功能(因為面對大量嵌入HTML程式碼中的ASP程式碼,錯誤的產生是很難避免的)。在asp.net中,這些得到了改觀。.net將程式程式碼與HTML程式碼分割開了。並且提供了大量方便使用的伺服器控制元件。這使得開發asp.net程式變得很簡單。但是在實際使用過程中,我發現如果過於依賴這些控制元件,的靈活性將變小。並且在使用過程中還發現了不少。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-997087/,如需轉載,請註明出處,否則將追究法律責任。

相關文章