ASP.NET客戶端編碼有兩個(gè)方面:
客戶端腳本:它運(yùn)行在瀏覽器上,進(jìn)而加速頁(yè)面的執(zhí)行。 例如,可以捕獲無(wú)效數(shù)據(jù)的客戶端數(shù)據(jù)驗(yàn)證,并相應(yīng)地警告用戶而不進(jìn)行往返服務(wù)器交互。
客戶端源代碼:ASP.NET頁(yè)面生成這個(gè)。 例如,ASP.NET頁(yè)面的HTML源代碼包含許多隱藏的字段,并自動(dòng)注入了JavaScript代碼塊,這些代碼保留了諸如視圖狀態(tài)之類的信息,或者執(zhí)行其他工作來(lái)使頁(yè)面工作。
所有ASP.NET服務(wù)器控件都允許調(diào)用使用JavaScript或VBScript編寫的客戶端代碼。 一些ASP.NET服務(wù)器控件使用客戶端腳本來(lái)為用戶提供響應(yīng)而不回發(fā)給服務(wù)器。 例如,驗(yàn)證控件。
除了這些腳本之外,Button控件還有一個(gè)屬性OnClientClick,它允許在單擊按鈕時(shí)執(zhí)行客戶端腳本。
傳統(tǒng)和服務(wù)器HTML控件具有以下事件,可以在引發(fā)時(shí)執(zhí)行腳本:
| 編號(hào) | 事件 | 描述 |
|---|---|---|
| 1 | onblur |
當(dāng)控件失去焦點(diǎn)時(shí)觸發(fā) |
| 2 | onfocus |
當(dāng)控件收到焦點(diǎn)時(shí)觸發(fā) |
| 3 | onclick |
點(diǎn)擊控件時(shí)觸發(fā) |
| 4 | onchange |
當(dāng)控件的值改變時(shí)觸發(fā) |
| 5 | onkeydown |
當(dāng)用戶按下一個(gè)鍵時(shí)觸發(fā) |
| 6 | onkeypress |
當(dāng)用戶按下字母數(shù)字鍵時(shí) |
| 7 | onkeyup |
當(dāng)用戶釋放一個(gè)鍵時(shí) |
| 8 | onmouseover |
當(dāng)用戶將鼠標(biāo)指針移到控件上時(shí) |
| 9 | onserverclick |
當(dāng)控件被點(diǎn)擊時(shí),它會(huì)引發(fā)控件的ServerClick事件 |
我們已經(jīng)討論和學(xué)習(xí)過(guò)了,ASP.NET頁(yè)面一般都是用兩個(gè)文件寫成的:
內(nèi)容文件包含HTML或ASP.NET控件標(biāo)記和文字以形成頁(yè)面的結(jié)構(gòu)。 文件后面的代碼包含類定義。 在運(yùn)行時(shí),內(nèi)容文件被解析并轉(zhuǎn)換成頁(yè)面類。
這個(gè)類和代碼文件中的類定義以及系統(tǒng)生成的代碼一起構(gòu)成處理所有發(fā)布數(shù)據(jù)的可執(zhí)行代碼(程序集),生成響應(yīng)并將其發(fā)送回客戶端。
考慮簡(jiǎn)單的頁(yè)面:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="clientside._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>
Untitled Page
</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Click" />
</div>
<hr />
<h3> <asp:Label ID="Msg" runat="server" Text=""> </asp:Label> </h3>
</form>
</body>
</html>
在瀏覽器上運(yùn)行此頁(yè)面時(shí),“查看源代碼”選項(xiàng)將顯示ASP.Net運(yùn)行時(shí)發(fā)送給瀏覽器的HTML頁(yè)面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>
Untitled Page
</title>
</head>
<body>
<form name="form1" method="post" action="Default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUKMTU5MTA2ODYwOWRk31NudGDgvhhA7joJum9Qn5RxU2M=" />
</div>
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION"
value="/wEWAwKpjZj0DALs0bLrBgKM54rGBhHsyM61rraxE+KnBTCS8cd1QDJ/"/>
</div>
<div>
<input name="TextBox1" type="text" id="TextBox1" />
<input type="submit" name="Button1" value="Click" id="Button1" />
</div>
<hr />
<h3><span id="Msg"></span></h3>
</form>
</body>
</html>
如果您正確地瀏覽了代碼,可以看到前兩個(gè)<div>標(biāo)簽包含隱藏的字段,用于存儲(chǔ)視圖狀態(tài)和驗(yàn)證信息。