ASP.NET 服務(wù)器控件

2018-09-27 18:09 更新

ASP.NET Web Forms - 服務(wù)器控件


服務(wù)器控件是服務(wù)器可理解的標(biāo)簽。


經(jīng)典 ASP 的局限性

下面列出的代碼是從上一章中復(fù)制的:

<html>
<body bgcolor="yellow">
<center>
<h2>Hello w3cschool.cn!</h2>
<p><%Response.Write(now())%></p>
</center>
</body>
</html>

上面的代碼反映出經(jīng)典 ASP 的局限性:代碼塊必須放置在您想要輸出顯示的位置。

通過(guò)經(jīng)典 ASP,想要把可執(zhí)行代碼從 HTML 頁(yè)面中分離出來(lái)是不可能的。這讓頁(yè)面變得難以閱讀,也難以維護(hù)。


ASP.NET - 服務(wù)器控件

ASP.NET 通過(guò)服務(wù)器控件,已經(jīng)解決了上述的"意大利面條式代碼"問(wèn)題。

服務(wù)器控件是服務(wù)器可理解的標(biāo)簽。

有三種類型的服務(wù)器控件:

  • HTML 服務(wù)器控件 - 創(chuàng)痛的 HTML 標(biāo)簽
  • Web 服務(wù)器控件 - 新的 ASP.NET 標(biāo)簽
  • Validation 服務(wù)器控件 - 用于輸入驗(yàn)證

ASP.NET - HTML 服務(wù)器控件

HTML 服務(wù)器控件是服務(wù)器可理解的 HTML 標(biāo)簽。

ASP.NET 文件中的 HTML 元素,默認(rèn)是作為文本進(jìn)行處理的。要想讓這些元素可編程,需向 HTML 元素中添加 runat="server" 屬性。這個(gè)屬性表示,該元素將被作為服務(wù)器控件進(jìn)行處理。同時(shí)需要添加 id 屬性來(lái)標(biāo)識(shí)服務(wù)器控件。id 引用可用于操作運(yùn)行時(shí)的服務(wù)器控件。

注釋:所有 HTML 服務(wù)器控件必須位于帶有 runat="server" 屬性的 <form> 標(biāo)簽內(nèi)。runat="server" 屬性表明了該表單必須在服務(wù)器上進(jìn)行處理。同時(shí)也表明了包含在它內(nèi)部的控件可被服務(wù)器腳本訪問(wèn)。

在下面的實(shí)例中,我們?cè)?.aspx 文件中聲明了一個(gè) HtmlAnchor 服務(wù)器控件。然后我們?cè)谝粋€(gè)事件句柄(事件句柄是一種針對(duì)給定事件執(zhí)行代碼的子例程)中操作 HtmlAnchor 控件的 HRef 屬性。Page_Load 事件是 ASP.NET 可理解的多種事件中的一種:

<script runat="server">
Sub Page_Load
link1.HRef="http://www.o2fo.com"
End Sub
</script>

<html>
<body>

<form runat="server">
<a id="link1" runat="server">Visit w3cschool.cn!</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ù)器控件沒(méi)有必要映射任何已存在的 HTML 元素,它們可以表示更復(fù)雜的元素。

創(chuàng)建 Web 服務(wù)器控件的語(yǔ)法是:

<asp:control_name id="some_id" runat="server" />

在下面的實(shí)例中,我們?cè)?.aspx 文件中聲明了一個(gè) Button 服務(wù)器控件。然后我們?yōu)?Click 事件創(chuàng)建一個(gè)事件句柄,用來(lái)改變按鈕上的文本:

<script runat="server">
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ù)器控件是用來(lái)驗(yàn)證用戶輸入的。如果用戶輸入沒(méi)有通過(guò)驗(yàn)證,將顯示一條錯(cuò)誤消息給用戶。

每種 validation 控件執(zhí)行一種指定類型的驗(yàn)證(比如驗(yàn)證摸個(gè)指定的值或者某個(gè)范圍的值)。

在默認(rèn)情況下,當(dāng) Button、ImageButton、LinkButton 控件被點(diǎn)擊時(shí),會(huì)執(zhí)行頁(yè)面驗(yàn)證。您可以設(shè)置 CausesValidation 為 false ,來(lái)阻止按鈕控件被點(diǎn)擊時(shí)進(jìn)行驗(yàn)證。

創(chuàng)建 Validation 服務(wù)器控件的語(yǔ)法是:

<asp:control_name id="some_id" runat="server" />

在下面的實(shí)例中,我們?cè)?.aspx 文件中聲明了一個(gè) TextBox 控件、一個(gè) Button 控件、一個(gè) RangeValidator 控件。如果驗(yàn)證失敗,文本 "The value must be from 1 to 100!" 將會(huì)顯示在 RangeValidator 控件中:

實(shí)例

<html>
<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>
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)