Latest web development tutorials

ASP.NET 服務器控件

服務器控件是服務器可理解的標籤。


經典ASP 的局限性

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

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

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

通過經典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 可理解的多種事件中的一種:

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

<html>
<body>

<form runat="server">
<a id="link1" runat="server">Visit W3CSchool.cc!</a>
</form>

</body>
</html>

可執行代碼本身已經被移到HTML 之外了。


ASP.NET - Web 服務器控件

Web 服務器控件是服務器可理解的特殊ASP.NET 標籤。

就像HTML 服務器控件,Web 服務器控件也是在服務器上創建的,它們同樣需要runat="server" 屬性才能生效。 然而,Web 服務器控件沒有必要映射任何已存在的HTML 元素,它們可以表示更複雜的元素。

創建Web 服務器控件的語法是:

<asp:control_name id="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、LinkBut​​ton 控件被點擊時,會執行頁面驗證。 您可以設置CausesValidation 為false ,來阻止按鈕控件被點擊時進行驗證。

創建Validation 服務器控件的語法是:

<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>