• λ我爱Aspx >> Asp.Net >> ASP.NET 2.0服务器控件与form runat=server标记
  • ASP.NET 2.0服务器控件与form runat=server标记

  • :未知  Դ:非寒日志  :2007-4-21 0:50:51  ؼ:.net,asp.net,asp
  • 1,ASP.NET 2.0服务器控件与<form runat=server></form>的关系

    ASP.NET 2.0服务器控件(HTML服务器控件和Web服务器控件)是否必须需要放在<form runat=server></form>的标记之中,可以根据需要进行设置,大多数情况下,对于只用来进行界面显示的控件、并且不需要处理事件的控件,可以不放在<form runat=server></form>之间,对于大多数控件来说,是要在服务器端进行事件处理和获得某些返回值的,因此需要放在<form runat=server></form>之间。

    2,如何进行控制

    服务器控件在进行Render、AddAttributesToRender等的时候,会执行下面这句:

    Page page1 = this.Page;

    if (page1 != null)

    {

    page1.VerifyRenderingInServerForm(this);

    }

    Page.VerifyRenderingInServerForm 方法 就是验证服务器控件是否需要在<form runat=server></form>的标记之中,如果不在这个标记之中,将会引发下面的异常。例如下面的代码:

    <%@ Page Language="C#" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">

    </script>

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head runat="server">

    <title>VerifyRenderingInServerForm</title>

    </head>

    <body>

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

    <form id="form1" runat="server">

    </form>

    </body>

    </html>

    在浏览这样的页面时,将会引发异常:

    类型“TextBox”的控件“TextBox1”必须放在具有 runat=server 的窗体标记内。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Web.HttpException: 类型“TextBox”的控件“TextBox1”必须放在具有 runat=server 的窗体标记内。

    Ҷƪл˵?
  • һƪ通过避免10 个常见 ASP.NET 缺陷使网站平稳运行
    һƪ使用 C# .NET 写入事件日志