學習ASP.NET的體會(一) (轉)
在中,整張頁是放在一張大表單裡面的。如:
網頁的具體內容……: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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我學習使用java的一點體會 (轉)Java
- 我學習使用java的一點體會(2) (轉)Java
- 我學習使用java的一點體會(3) (轉)Java
- 我學習使用java的一點體會(5) (轉)Java
- 我學習使用java的一點體會(4) (轉)Java
- 我學習使用java的一點體會(8) (轉)Java
- 學習EJB CMP/CMR 的心得體會 (轉)
- python學習心得體會(一)Python
- 最近學習的體會
- 學習專案管理理論後的體會(轉)專案管理
- 學習專案管理理論後的體會 (轉)專案管理
- 專案進度控制學習體會(轉)
- 入門教程的一些學習體會
- 學習Spring的體會Spring
- 軟體工程學習後的一些體會--------兩週軟體工程
- 專案合同管理中要學習體會(轉)
- 學習java一定會用到的應用軟體Java
- 學習程式設計一年多的體會程式設計
- Laravel 框架學習心得體會Laravel框架
- 資料中心學習體會
- 學習ASP.NET的流程ASP.NET
- vi學習體系(轉)
- C++學習體會:記憶體管理C++記憶體
- RabbitMQ學習心得體會之ExchangeMQ
- 通過翻譯技術部落格學習的一些體會
- 個人學習SMC的一點體會--回答dREAMhTEATER兄 (2千字)
- 學習專案管理理論後的體會專案管理
- 對軟體開發的一點心得體會 (轉)
- 換個角度學習ASP.NET Core中介軟體ASP.NET
- 流媒體學習---------序 (轉)
- 轉行Java能學會嗎?零基礎學習Java的學習路線Java
- ASP.NET MVC學習筆記:(一)路由匹配ASP.NETMVC筆記路由
- Js函式和物件學習體會JS函式物件
- 學習“5S”管理心得體會
- java學習總結及心得體會Java
- 物聯網學習教程—const用法的體會
- 關於mssql的學習體會,僅供參考!SQL
- [轉] 一個小時學會GitGit