# 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 服务器控件
- 免责声明