asp.net web forms - 服務(wù)器控件
服務(wù)器控件是服務(wù)器可理解的標(biāo)簽。
經(jīng)典 asp 的局限性
下面列出的代碼是從上一章中復(fù)制的:
<body bgcolor="yellow">
<center>
<h2>hello yapf!</h2>
<p><%response.write(now())%></p>
</center>
</body>
</html>
上面的代碼反映出經(jīng)典 asp 的局限性:代碼塊必須放置在您想要輸出顯示的位置。
通過經(jīng)典 asp,想要把可執(zhí)行代碼從 html 頁面中分離出來是不可能的。這讓頁面變得難以閱讀,也難以維護(hù)。
asp.net - 服務(wù)器控件
asp.net 通過服務(wù)器控件,已經(jīng)解決了上述的"意大利面條式代碼"問題。
服務(wù)器控件是服務(wù)器可理解的標(biāo)簽。
有三種類型的服務(wù)器控件:
- html 服務(wù)器控件 - 創(chuàng)建的 html 標(biāo)簽
- web 服務(wù)器控件 - 新的 asp.net 標(biāo)簽
- validation 服務(wù)器控件 - 用于輸入驗證
asp.net - html 服務(wù)器控件
html 服務(wù)器控件是服務(wù)器可理解的 html 標(biāo)簽。
asp.net 文件中的 html 元素,默認(rèn)是作為文本進(jìn)行處理的。要想讓這些元素可編程,需向 html 元素中添加 runat="server" 屬性。這個屬性表示,該元素將被作為服務(wù)器控件進(jìn)行處理。同時需要添加 id 屬性來標(biāo)識服務(wù)器控件。id 引用可用于操作運行時的服務(wù)器控件。
注釋:所有 html 服務(wù)器控件必須位于帶有 runat="server" 屬性的 <form> 標(biāo)簽內(nèi)。runat="server" 屬性表明了該表單必須在服務(wù)器上進(jìn)行處理。同時也表明了包含在它內(nèi)部的控件可被服務(wù)器腳本訪問。
在下面的實例中,我們在 .aspx 文件中聲明了一個 htmlanchor 服務(wù)器控件。然后我們在一個事件句柄(事件句柄是一種針對給定事件執(zhí)行代碼的子例程)中操作 htmlanchor 控件的 href 屬性。page_load 事件是 asp.net 可理解的多種事件中的一種:
sub page_load
link1.href="http://www.090948.com"
end sub
</script>
<html>
<body>
<form runat="server">
<a id="link1" runat="server">visit yapf!</a>
</form>
</body>
</html>
可執(zhí)行代碼本身已經(jīng)被移到 html 之外了。
asp.net - web 服務(wù)器控件
web 服務(wù)器控件是服務(wù)器可理解的特殊 asp.net 標(biāo)簽。
就像 html 服務(wù)器控件,web 服務(wù)器控件也是在服務(wù)器上創(chuàng)建的,它們同樣需要 runat="server" 屬性才能生效。然而,web 服務(wù)器控件沒有必要映射任何已存在的 html 元素,它們可以表示更復(fù)雜的元素。
創(chuàng)建 web 服務(wù)器控件的語法是:
在下面的實例中,我們在 .aspx 文件中聲明了一個 button 服務(wù)器控件。然后我們?yōu)?click 事件創(chuàng)建一個事件句柄,用來改變按鈕上的文本:
sub submit(source as object, e as eventargs)
button1.text="you clicked me!"
end sub
</script>
<html>
<body>
<form runat="server">
<asp:button id="button1" text="click me!"
runat="server" onclick="submit"/>
</form>
</body>
</html>
asp.net - validation 服務(wù)器控件
validation 服務(wù)器控件是用來驗證用戶輸入的。如果用戶輸入沒有通過驗證,將顯示一條錯誤消息給用戶。
每種 validation 控件執(zhí)行一種指定類型的驗證(比如驗證某個指定的值或者某個范圍的值)。
在默認(rèn)情況下,當(dāng) button、imagebutton、linkbutton 控件被點擊時,會執(zhí)行頁面驗證。您可以設(shè)置 causesvalidation 為 false ,來阻止按鈕控件被點擊時進(jìn)行驗證。
創(chuàng)建 validation 服務(wù)器控件的語法是:
在下面的實例中,我們在 .aspx 文件中聲明了一個 textbox 控件、一個 button 控件、一個 rangevalidator 控件。如果驗證失敗,文本 "the value must be from 1 to 100!" 將會顯示在 rangevalidator 控件中:
實例
<body>
<form runat="server">
<p>enter a number from 1 to 100:
<asp:textbox id="tbox1" runat="server" />
<br /><br />
<asp:button text="submit" runat="server" />
</p>
<p>
<asp:rangevalidator
controltovalidate="tbox1"
minimumvalue="1"
maximumvalue="100"
type="integer"
text="the value must be from 1 to 100!"
runat="server" />
</p>
</form>
</body>
</html>