明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

細(xì)細(xì)品味ASP.NET(二)

[摘要]Web表單  ASP.NET Web Forms就是Web頁(yè)面,同現(xiàn)在你用 ASP編寫(xiě)代碼所做的工作是一樣的。但是還不僅僅如此, ASP.NET Web Forms是在一個(gè)面向?qū)ο蟮木幊棠P蜕显O(shè)計(jì)的,這樣代碼就能夠再利用,并且使應(yīng)用程序代碼與頁(yè)面內(nèi)容分隔開(kāi)。在Visual Basic中,你將一個(gè)...
Web表單

ASP.NET Web Forms就是Web頁(yè)面,同現(xiàn)在你用 ASP編寫(xiě)代碼所做的工作是一樣的。但是還不僅僅如此, ASP.NET Web Forms是在一個(gè)面向?qū)ο蟮木幊棠P蜕显O(shè)計(jì)的,這樣代碼就能夠再利用,并且使應(yīng)用程序代碼與頁(yè)面內(nèi)容分隔開(kāi)。在Visual Basic中,你將一個(gè) 控件 拖曳到一個(gè)表單上,然后執(zhí)行其下的事件程序。在傳統(tǒng)的 ASP中,這是不可能的,因?yàn)樵谟脩?hù)界面 控件 和它們的 服務(wù)器 端代碼之間沒(méi)有鏈接存在。但是在 ASP.NET 中,這樣的一個(gè)鏈接是存在的。所以,你可以編寫(xiě)下面表1所示的代碼,而不用手動(dòng)從變量表中拖出值:
表1 簡(jiǎn)單 ASP.NET Web Form例程
<html>
<script language=“vb” runat=“server”>
Sub SubmitButton_Click(Source As Object, E As EventArgs)
Response.Write (ÒYou entered Ò & Name.text)
End Sub
</script>
<body>
<form method=“post” runat=“server”>
Name: <asp:textbox id=“Name” runat=“server” /><br>
<asp:Button text=“Enter”
OnClick=“SubmitButton_Click” runat=“server” />
</form>
</body>
</html>
在表1中有兩點(diǎn)值得注意。第一是在表單上 runat=“server” 屬性和 asp:textbox 控件 的使用,這可以告訴 ASP.NET 服務(wù)器 和客戶(hù)都可以使用這些 控件 。如此使用的 控件 叫做 服務(wù)器 控件 。asp: 用做 控件 名的前綴,它本身就識(shí)別了 控件 是從哪來(lái)的。稍后我將討論這一點(diǎn)。第二個(gè)需要注意的細(xì)節(jié)是OnClick事件。開(kāi)發(fā) DHTML 代碼時(shí),你經(jīng)常要用到 OnClick事件,這是為了在瀏覽器中激活一個(gè)事件。因?yàn)闉?控件 設(shè)置了runat=“server” 屬性,所以事件只在 服務(wù)器 上被激活。要對(duì)這個(gè)例子進(jìn)行擴(kuò)展,可以去掉 Response.Write,然后用一個(gè)基于 服務(wù)器 的 控件 來(lái)代替它,比如下面的表2代碼:
表2 使用基于 服務(wù)器 的 控件
<html>
<script language=“vb” runat=“server”>
Sub SubmitButton_Click(Source As Object, E As EventArgs)
YouEntered.Text = ÒYou entered Ò & txtName.text
End Sub
</script>
<body>
<form method=“post” runat=“server”>
Name: <asp:textbox id=“txtName” runat=“server” /><br>
<asp:Button text=“Enter”
OnClick=“SubmitButton_Click” runat=“server” />
<br>
<asp:label id=“YouEntered” runat=“server”></span>
</form>
</body>
</html>
這個(gè)代碼運(yùn)行相當(dāng)好,很象一個(gè)傳統(tǒng)的客戶(hù)或Visual Basic表單,代碼也直觀多了。你可以用 服務(wù)器 控件 來(lái)連接事件過(guò)程和基于 服務(wù)器 的代碼。這些基于 服務(wù)器 的 控件 向?yàn)g覽器發(fā)送純 HTML內(nèi)容,其中不再含有客戶(hù)端腳本。實(shí)際上,這其中一個(gè)重要的設(shè)計(jì)目的就是要堅(jiān)持使用固有的 HTML 3.2元素代碼以提供最大可能的瀏覽器兼容性。比如說(shuō),表2中的代碼生成了以下HTML:
<html>
<body>
<FORM name=“HtmlForm2" method=“post” action=“Test.aspx” id=“HtmlForm2">
<INPUT type=“hidden” name=“__VIEWSTATE” value=“a0z664351470__x”>
Name: <input name=“txtName” type=“text” id=“txtName”><br>
<input type=“submit” name=“Button5" value=“Enter”>
<br>
<span id=“l(fā)blYouEntered”></span>
</FORM>
</body>
</html>
生成的代碼是符合 HTML 3.2標(biāo)準(zhǔn)的。它執(zhí)行一個(gè)標(biāo)準(zhǔn)投遞,將用戶(hù)輸入發(fā)送回同一個(gè)文件。這里沒(méi)有對(duì) 服務(wù)器 狀態(tài)進(jìn)行維護(hù),也沒(méi)有客戶(hù)端腳本對(duì)狀態(tài)進(jìn)行維護(hù)。隱含的域執(zhí)行對(duì) 控件 狀態(tài)的維護(hù),這意味著在頁(yè)面的“提交-返回”之間, 控件 能自動(dòng)恢復(fù)狀態(tài),而不需要任何編程干預(yù)。雖然 ASP.NET Web 控件 的默認(rèn)輸出是符合HTML 3.2標(biāo)準(zhǔn)的內(nèi)容,但是對(duì)于更高級(jí)的瀏覽器如Microsoft Internet Explorer 5.0,也可以輸出為 DHTML 格式。這樣你就能只使用一套 服務(wù)器 控件 來(lái)編寫(xiě)頁(yè)面,允許 控件 根據(jù)瀏覽器決定發(fā)送哪種類(lèi)型的輸出,從而允許你將發(fā)送 DHTML 的 控件 和客戶(hù)端腳本用到最新版本的Internet Explorer中,將純 HTML 3.2內(nèi)容發(fā)送到其它瀏覽器中。