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