ASP.NET - 服务器控件
服务器控件是服务器可以理解的标签。
Classic ASP 的局限性
下面列出的代码是从上一节中拷贝的:
<html>
<body style="background-color:#e5eecc; text-align:center;">
<h2>Hello W3School!</h2>
<p><%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" 属性指示该表单应在服务器进行处理。它同时指示其包括在内的控件可被服务器脚本访问。
在下面的例子中,我们在 .htmlx 文件中声明了一个 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_name id="some_id" runat="server" />
在下面的例子中,我们在 .htmlx 文件中的声明了一个 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" />
在下面的例子中,我们在 .htmlx 文件中声明了一个 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>