ASP.NET - 服務(wù)器控件
服務(wù)器控件是服務(wù)器可以理解的標簽。
Classic ASP 的局限性
下面列出的代碼是從上一節(jié)中拷貝的:
<html>
<body style="background-color:#e5eecc; text-align:center;">
<h2>Hello W3School!</h2>
<p><%Response.Write(now())%>
</p>
</body>
</html>
上面的代碼能夠反映出 Classic ASP 的局限性:代碼塊必須放置在需要進行輸出的位置。
通過 Classic ASP,我們是無法將可執(zhí)行代碼與 HTML 本身進行分離的。這使得頁面難以閱讀,也難以維護。
ASP.NET - 服務(wù)器控件
通過服務(wù)器控件,ASP.NET 已經(jīng)解決了上面所描述的“意大利面條式代碼”的問題。
服務(wù)器控件是可被服務(wù)器理解的標簽。
有三種類型的服務(wù)器控件:
- HTML 服務(wù)器控件 - 傳統(tǒng)的 HTML 標簽
- Web 服務(wù)器控件 - 新的 ASP.NET 標簽
- Validation 服務(wù)器控件 - 用于輸入驗證
ASP.NET - HTML 服務(wù)器控件
HTML 服務(wù)器控件是服務(wù)器可理解的 HTML 標簽。
ASP.NET 中的 HTML 元素是作為文本來進行處理的。要想使這些元素可編程,就需要向這些 HTML 元素添加 runat="server" 屬性。該屬性指示,此元素是一個服務(wù)器控件。同時要添加 id 屬性來標識該服務(wù)器控件。該 id 引用可用于操作運行時的服務(wù)器控件。
注釋:所有 HTML 服務(wù)器控件必須位于帶有 runat="server" 屬性的 <form> 標簽內(nèi)。runat="server" 屬性指示該表單應(yīng)在服務(wù)器進行處理。它同時指示其包括在內(nèi)的控件可被服務(wù)器腳本訪問。
在下面的例子中,我們在 .aspx 文件中聲明了一個 HtmlAnchor 服務(wù)器控件。然后我們在一個事件處理程序中操作該 HtmlAnchor 控件的 HRef 屬性。Page_Load 事件是眾多 ASP.NET 可理解的事件中的一種類型:
注釋:事件處理程序(event handler)是一種針對給定事件執(zhí)行代碼的子例程。
<script runat="server">
Sub Page_Load
link1.HRef="http://www.dbjr.com.cn"
End Sub
</script>
<html>
<body>
<form runat="server">
<a id="link1" runat="server">Visit W3School!</a>
</form>
</body>
</html>
提示:可執(zhí)行代碼本身已被移到 HTML 之外了。
ASP.NET - Web 服務(wù)器控件
Web 服務(wù)器控件是服務(wù)器可理解的特殊 ASP.NET 標簽。
類似 HTML 服務(wù)器控件,Web 服務(wù)器控件也在服務(wù)器上創(chuàng)建,它們同樣需要 runat="server" 屬性以使其生效。不過,Web 服務(wù)器控件沒有必要映射任何已存在的 HTML 元素,它們代表更復(fù)雜的元素。
創(chuàng)建 Web 服務(wù)器控件的語法是:
<asp:control_name id="some_id" runat="server" />
在下面的例子中,我們在 .aspx 文件中的聲明了一個 Button 服務(wù)器控件。然后我們?yōu)?Click 事件創(chuàng)建了一個事件處理程序,它可修改按鈕上的文本:
<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ù)器控件用于驗證用戶輸入。如果用戶輸入沒有通過驗證,將向用戶顯示一條錯誤消息。
每種 validation 控件執(zhí)行一種特定的驗證類型(比如驗證某個具體的值或者某個范圍的值)。
默認地,當點擊Button, ImageButton或LinkButton 時,就會執(zhí)行頁面驗證。您可通過把 CausesValidation 屬性設(shè)置為 false,來阻止某個按鈕控件被點擊時進行驗證。
創(chuàng)建 Validation 服務(wù)器控件的語法是:
<asp:control_name id="some_id" runat="server" />
在下面的例子中,我們在 .aspx 文件中聲明了一個 TextBox 控件,一個 Button 控件,以及一個 RangeValidator 控件。如果驗證失敗,文本 "The value must be from 1 to 100!" 將顯示在 RangeValidator 控件中:
<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>