占位符代码在"view source code"时仍然可见,即使占位符可见属性从代码后面设置为 false


<asp:PlaceHolder ID="pnlThanks" runat="server" Visible="false">
          <p><asp:Literal  ID="lblReceipt" runat="server"></asp:Literal></p>
</asp:PlaceHolder>   
<asp:PlaceHolder ID="pnlForm" runat="server" Visible="true">
         <form id="form1" runat="server" class="busgroup-form">
          //// All form controls
          </form>
</asp:PlaceHolder>

代码隐藏文件:

  Protected Sub submit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdsubmit.Click
      form1.Controls.Clear()
      pnlForm.Visible = False
      pnlThanks.Visible = True
  End Sub

因此,在提交表单后,当"pnlThanks"占位符可见时,我可以看到页面上显示的正确内容。但是当我在浏览器上"查看源代码"时,我看到的是表单的源代码,而不是"pnlThanks"占位符中的内容。

我做错了什么?

您需要

将所有控件都放在 <form> 标记中,因为 ASP.NET 取决于执行回发等form

您的网页中只能有一个<form>标记。

将您的代码更改为以下内容:

<form id="form1" runat="server" class="busgroup-form">
    <asp:PlaceHolder ID="pnlThanks" runat="server" Visible="false">
        <p><asp:Literal  ID="lblReceipt" runat="server"></asp:Literal></p>
    </asp:PlaceHolder>
    <asp:PlaceHolder ID="pnlForm" runat="server" Visible="true">
    </asp:PlaceHolder>
</form>

当我测试它时,您的代码按预期工作。我的猜测是,在回发时执行的其他地方的代码中还有另一个pnlForm.Visible = True

如果

visible=false,pnlThank 不会呈现,因此它不会显示在源代码中。您可以使用 CSS (display=none( 在启动时隐藏它,并在需要时进行更改。

相关内容

  • 没有找到相关文章

最新更新