細細品味ASP.NET(二)
發(fā)表時間:2024-02-10 來源:明輝站整理相關軟件相關文章人氣:
[摘要]Web表單 ASP.NET Web Forms就是Web頁面,同現(xiàn)在你用 ASP編寫代碼所做的工作是一樣的。但是還不僅僅如此, ASP.NET Web Forms是在一個面向?qū)ο蟮木幊棠P蜕显O計的,這樣代碼就能夠再利用,并且使應用程序代碼與頁面內(nèi)容分隔開。在Visual Basic中,你將一個...
Web表單
ASP.NET Web Forms就是Web頁面,同現(xiàn)在你用 ASP編寫代碼所做的工作是一樣的。但是還不僅僅如此, ASP.NET Web Forms是在一個面向?qū)ο蟮木幊棠P蜕显O計的,這樣代碼就能夠再利用,并且使應用程序代碼與頁面內(nèi)容分隔開。在Visual Basic中,你將一個 控件 拖曳到一個表單上,然后執(zhí)行其下的事件程序。在傳統(tǒng)的 ASP中,這是不可能的,因為在用戶界面 控件 和它們的 服務器 端代碼之間沒有鏈接存在。但是在 ASP.NET 中,這樣的一個鏈接是存在的。所以,你可以編寫下面表1所示的代碼,而不用手動從變量表中拖出值:
表1 簡單 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中有兩點值得注意。第一是在表單上 runat=“server” 屬性和 asp:textbox 控件 的使用,這可以告訴 ASP.NET 服務器 和客戶都可以使用這些 控件 。如此使用的 控件 叫做 服務器 控件 。asp: 用做 控件 名的前綴,它本身就識別了 控件 是從哪來的。稍后我將討論這一點。第二個需要注意的細節(jié)是OnClick事件。開發(fā) DHTML 代碼時,你經(jīng)常要用到 OnClick事件,這是為了在瀏覽器中激活一個事件。因為為 控件 設置了runat=“server” 屬性,所以事件只在 服務器 上被激活。要對這個例子進行擴展,可以去掉 Response.Write,然后用一個基于 服務器 的 控件 來代替它,比如下面的表2代碼:
表2 使用基于 服務器 的 控件
<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>
這個代碼運行相當好,很象一個傳統(tǒng)的客戶或Visual Basic表單,代碼也直觀多了。你可以用 服務器 控件 來連接事件過程和基于 服務器 的代碼。這些基于 服務器 的 控件 向瀏覽器發(fā)送純 HTML內(nèi)容,其中不再含有客戶端腳本。實際上,這其中一個重要的設計目的就是要堅持使用固有的 HTML 3.2元素代碼以提供最大可能的瀏覽器兼容性。比如說,表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標準的。它執(zhí)行一個標準投遞,將用戶輸入發(fā)送回同一個文件。這里沒有對 服務器 狀態(tài)進行維護,也沒有客戶端腳本對狀態(tài)進行維護。隱含的域執(zhí)行對 控件 狀態(tài)的維護,這意味著在頁面的“提交-返回”之間, 控件 能自動恢復狀態(tài),而不需要任何編程干預。雖然 ASP.NET Web 控件 的默認輸出是符合HTML 3.2標準的內(nèi)容,但是對于更高級的瀏覽器如Microsoft Internet Explorer 5.0,也可以輸出為 DHTML 格式。這樣你就能只使用一套 服務器 控件 來編寫頁面,允許 控件 根據(jù)瀏覽器決定發(fā)送哪種類型的輸出,從而允許你將發(fā)送 DHTML 的 控件 和客戶端腳本用到最新版本的Internet Explorer中,將純 HTML 3.2內(nèi)容發(fā)送到其它瀏覽器中。