国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

[ASP.NET 教程] 三. Web Forms編程模型

2024-07-10 12:56:33
字體:
來源:轉載
供稿:網友
  
1. web forms編程模型

web forms中的用戶界面是由html和服務器控件共同描述的。每個控件標簽都對應了一個服務器上的實際的對象。

控件觸發的事件是在服務器端處理的。asp.net將客戶端與服務器端的處理“融合”到一起,看起來就好像事件是在同一端被觸發和處理的,而事實上是客戶端事件導致瀏覽器產生回發,于是服務器端對象觸發事件。

<script></script>塊中的服務器端代碼并不能稱為腳本,它是被編譯然后運行的,而不是解釋執行,所以它的執行效率會比asp腳本高很多。

標簽中的runat=”server”屬性是asp.net頁面的關鍵,它讓服務器“執行”標簽,而不是將標簽文本返回給客戶端,所以在需要asp.net處理的標簽上都必須添加runat=”server”。
2. web控件

前面例子中的textbox,button,label都是web控件。它們是在system.web.ui.webcontrols名稱空間中定義的服務器控件,其他具體的控件可以查閱.net framework sdk文檔,它們都可以在asp.net web forms中使用,其中有簡單的控件,如label,也有相當復雜的控件,如datagrid。
3. html 控件

html控件是asp.net 的另一種服務器控件,它們定義在system.web.ui.htmlcontrols名稱空間中,具體請查閱.net framework sdk文檔,它們通常是在常規的html標簽中添加runat="server",比如<input type="text" runat="server" />實際上就是一個system.web.ui.htmlcontrols.htmlinputtext的對象,實際上每個web form中的<form runat="server" />標簽就是一個html控件。
4. 頁面事件

并非只有服務器控件可以觸發事件,頁面同樣可以。

首先,在介紹頁面事件前,什么是頁面?下面描述了asp.net處理doadd.aspx的過程:

1) 系統創建一個臨時文件,其中包含了一個由system.web.ui.page派生的類,它代表web頁面。
2) asp.net把根據aspx文件生成的代碼放到剛剛生成的類中。其中add方法會稱為生成類的成員。
3) 這個類被編譯為一個dll文件,存放在系統文件夾。以后的請求將直接使用這個dll文件,而不會重復1,2步,除非源文件已被改變。
4) 請求頁面時,asp.net實例化這個派生的類,然后“執行”它,page對象實例化其中的所有控件,將它們的輸出發送到瀏覽器。
如果安裝了.net framework sdk 1.1可以查看下面這張圖來了解這個過程:
ms-help://ms.netframeworksdkv1.1.chs/cpguidenf/html/vbderivedpagebaseclasstowebformoutput.gif

.net framework sdk文檔描述了page類的所有事件,這里僅介紹幾個重要的 
page.load事件
page.load事件在頁面加載時觸發,我們通常在load事件處理中通過page.ispostback屬性來判斷頁面時第一次加載還是產生回發后加載的。ispostback是非常重要的屬性,如果ispostback為true則表示產生了回發,一般來說,在回發時不需要初始化控件,asp.net會保持控件狀態。 
page.init事件
page.init事件在頁面初始化時觸發,postback時不會觸發,所以可以在這里初始化控件,連接事件處理程序等等。 
page.prerender事件
prerender事件在頁面執行完畢,即將呈現界面時觸發,可以在這里處理頁面的結束動作。
5. 頁面指令
可以在aspx文件中使用頁面指令,雖然標準的做法是將指令包括在文件的開頭,但是它們可以位于文件中的任何位置。每個指令都可以包含一個或多個特定于該指令的屬性。

在所有頁面指令中@page是最常用的一個,例如:

代碼:
<%@ page language="c#" %>
這個條指令設置所有內嵌代碼的語言。比如:

html 代碼:
<html>
<body>
 now time: <% response.write(datetime.now.tostring()); %>
</body>
</html>

@page在一個頁面中只能出現一次

@import指令可以為頁面導入一個命名空間,例如:

代碼:
<%@ import namespace="system.data" %>

相當于c#代碼:

代碼:
using system.data;

@import指令可以多次出現

還有許多其他指令,沒種指令也有很多屬性,這里不可能詳細介紹,請查閱.net framework sdk文檔的相關部分。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清苑县| 峨眉山市| 南雄市| 涟源市| 富源县| 淮滨县| 克东县| 安宁市| 上杭县| 正定县| 九龙县| 花莲市| 辽阳市| 南召县| 广宁县| 封开县| 梅河口市| 瑞昌市| 崇仁县| 宣武区| 大厂| 舒兰市| 习水县| 德兴市| 富顺县| 仁怀市| 来宾市| 永和县| 永修县| 绍兴县| 武定县| 福鼎市| 余干县| 淮南市| 象山县| 彝良县| 晋江市| 合作市| 华宁县| 昌江| 瓦房店市|