ASP.NET - 服务器控件

服务器控件是服务器可以理解的标签。

Classic ASP 的局限性

下面列出的代码是从上一节中拷贝的:

  1. <html>
  2. <body style="background-color:#e5eecc; text-align:center;">
  3. <h2>Hello yousite!</h2>
  4. <p><%Response.Write(now())%></p>
  5. </body>
  6. </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)是一种针对给定事件执行代码的子例程。

  1. <script runat="server">
  2. Sub Page_Load
  3. link1.HRef="http://www.jishuchi.com"
  4. End Sub
  5. </script>
  6.  
  7. <html>
  8. <body>
  9.  
  10. <form runat="server">
  11. <a id="link1" runat="server">Visit jishuchi!</a>
  12. </form>
  13.  
  14. </body>
  15. </html>

提示:可执行代码本身已被移到 HTML 之外了。

ASP.NET - Web 服务器控件

Web 服务器控件是服务器可理解的特殊 ASP.NET 标签。

类似 HTML 服务器控件,Web 服务器控件也在服务器上创建,它们同样需要 runat="server" 属性以使其生效。不过,Web 服务器控件没有必要映射任何已存在的 HTML 元素,它们代表更复杂的元素。

创建 Web 服务器控件的语法是:

  1. <asp:control_name id="some_id" runat="server" />

在下面的例子中,我们在 .aspx 文件中的声明了一个 Button 服务器控件。然后我们为 Click 事件创建了一个事件处理程序,它可修改按钮上的文本:

  1. <script runat="server">
  2. Sub submit(Source As Object, e As EventArgs)
  3. button1.Text="You clicked me!"
  4. End Sub
  5. </script>
  6.  
  7. <html>
  8. <body>
  9.  
  10. <form runat="server">
  11. <asp:Button id="button1" Text="Click me!" runat="server" OnClick="submit"/>
  12. </form>
  13.  
  14. </body>
  15. </html>

ASP.NET - Validation 服务器控件

Validation 服务器控件用于验证用户输入。如果用户输入没有通过验证,将向用户显示一条错误消息。

每种 validation 控件执行一种特定的验证类型(比如验证某个具体的值或者某个范围的值)。

默认地,当点击Button, ImageButton或LinkButton 时,就会执行页面验证。您可通过把 CausesValidation 属性设置为 false,来阻止某个按钮控件被点击时进行验证。

创建 Validation 服务器控件的语法是:

  1. <asp:control_name id="some_id" runat="server" />

在下面的例子中,我们在 .aspx 文件中声明了一个 TextBox 控件,一个 Button 控件,以及一个 RangeValidator 控件。如果验证失败,文本 "The value must be from 1 to 100!" 将显示在 RangeValidator 控件中:

  1. <html>
  2. <body>
  3. <form runat="server">
  4.  
  5. <p>Enter a number from 1 to 100:
  6. <asp:TextBox id="tbox1" runat="server" />
  7. <br /><br />
  8. <asp:Button Text="Submit" runat="server" />
  9. </p>
  10.  
  11. <p>
  12. <asp:RangeValidator
  13. ControlToValidate="tbox1"
  14. MinimumValue="1"
  15. MaximumValue="100"
  16. Type="Integer"
  17. Text="The value must be from 1 to 100!"
  18. runat="server" />
  19. </p>
  20.  
  21. </form>
  22. </body>
  23. </html>