# ASP.NET Web Forms - 服務器控件
服務器控件是服務器可理解的標簽。
## 經典 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、LinkButton 控件被點擊時,會執行頁面驗證。您可以設置 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>
```
- C# 基礎
- C# 簡介
- C# 環境
- C# 程序結構
- C# 基本語法
- C# 數據類型
- C# 類型轉換
- C# 變量
- C# 常量
- C# 運算符
- C# 判斷
- C# 循環
- C# 封裝
- C# 方法
- C# 可空類型(Nullable)
- C# 數組(Array)
- C# 字符串(String)
- C# 結構(Struct)
- C# 枚舉(Enum)
- C# 類(Class)
- C# 繼承
- C# 多態性
- C# 運算符重載
- C# 接口(Interface)
- C# 命名空間(Namespace)
- C# 預處理器指令
- C# 正則表達式
- C# 異常處理
- C# 文件的輸入與輸出
- C# 高級
- C# 特性(Attribute)
- C# 反射(Reflection)
- C# 屬性(Property)
- C# 索引器(Indexer)
- C# 委托(Delegate)
- C# 事件(Event)
- C# 集合(Collection)
- C# 泛型(Generic)
- C# 匿名方法
- C# 不安全代碼
- C# 多線程
- ASP.NET 簡介
- Web Pages 教程
- ASP.NET Web Pages - 教程
- ASP.NET Web Pages - 添加 Razor 代碼
- ASP.NET Web Pages - 頁面布局
- ASP.NET Web Pages - 文件夾
- ASP.NET Web Pages - 全局頁面
- ASP.NET Web Pages - HTML 表單
- ASP.NET Web Pages - 對象
- ASP.NET Web Pages - 文件
- ASP.NET Web Pages - 幫助器
- ASP.NET Web Pages - WebGrid 幫助器
- ASP.NET Web Pages - Chart 幫助器
- ASP.NET Web Pages - WebMail 幫助器
- ASP.NET Web Pages - PHP
- ASP.NET Web Pages - 發布網站
- Razor 教程
- ASP.NET Razor - 標記
- ASP.NET Razor - C# 和 VB 代碼語法
- ASP.NET Razor - C# 變量
- ASP.NET Razor - C# 循環和數組
- ASP.NET Razor - C# 邏輯條件
- ASP.NET Razor - VB 變量
- ASP.NET Razor - VB 循環和數組
- ASP.NET Razor - VB 邏輯條件
- MVC 教程
- ASP.NET MVC 教程
- ASP.NET MVC - Internet 應用程序
- ASP.NET MVC - 應用程序文件夾
- ASP.NET MVC - 樣式和布局
- ASP.NET MVC - 控制器
- ASP.NET MVC - 視圖
- ASP.NET MVC - SQL 數據庫
- ASP.NET MVC - 模型
- ASP.NET MVC - 安全
- ASP.NET MVC - HTML 幫助器
- ASP.NET MVC - 發布網站
- Web Forms 教程
- ASP.NET Web Forms - 教程
- ASP.NET Web Forms - HTML 頁面
- ASP.NET Web Forms - 服務器控件
- ASP.NET Web Forms - 事件
- ASP.NET Web Forms - HTML 表單
- ASP.NET Web Forms - 維持 ViewState
- ASP.NET Web Forms - TextBox 控件
- ASP.NET Web Forms - Button 控件
- ASP.NET Web Forms - 數據綁定
- ASP.NET Web Forms - ArrayList 對象
- ASP.NET Web Forms - Hashtable 對象
- ASP.NET Web Forms - SortedList 對象
- ASP.NET Web Forms - XML 文件
- ASP.NET Web Forms - Repeater 控件
- ASP.NET Web Forms - DataList 控件
- ASP.NET Web Forms - 數據庫連接
- ASP.NET Web Forms - 母版頁
- ASP.NET Web Forms - 導航
- Web Pages 參考手冊
- ASP.NET Web Pages - 類
- ASP.NET Web Pages - WebSecurity 對象
- ASP.NET Web Pages - Database 對象
- ASP.NET Web Pages - WebMail 對象
- ASP.NET Web Pages - 更多幫助器
- MVC - 參考手冊
- Web Forms 參考手冊
- ASP.NET Web Forms - HTML 服務器控件
- ASP.NET Web Forms - Web 服務器控件
- ASP.NET Web Forms - Validation 服務器控件
- 免責聲明