• λ我爱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
  • 这是因为,TextBox控件在进行Render的时候调用了page1.VerifyRenderingInServerForm(this);,因此,如果不放在<form runat=server></form>的标记之间,这个验证过程是通不过的。

    但是,我们可以在代码中重载这个方法,以便是TextBox控件可以放在<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">

    public override void VerifyRenderingInServerForm(Control control)

    {

    }

    </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>

    浏览这样的页面就不会产生异常。

    3,调整展现方式后,页面能否正常工作

    MSDN上解释Page.VerifyRenderingInServerForm 方法时说:

    如果回发或使用客户端脚本的服务器控件没有包含在 HtmlForm 服务器控件 (<form runat="server">) 标记中,它们将无法正常工作。这些控件可以在呈现时调用该方法,以在它们没有包含在 HtmlForm 控件中时提供明确的错误信息。

    是的,虽然下面的代码可以正常显示,但一旦单击“提交”按钮,服务器端将得不到输入的值,页不能保存状态了。

    <%@ 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">

    public override void VerifyRenderingInServerForm(Control control)

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