ASP.NET - 服务器控件
服务器控件是服务器可以理解的标签。
Classic ASP 的局限性
下面列出的代码是从上一节中拷贝的:
<html>
<body bgcolor="yellow">
<center>
<h2>Hello W3School!</h2>
<p><%Response.Write(now())%>
</p>
</center>
</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.jbxue.com" 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" />
在下面的例子中,我们在 .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>
TIY