当"查看源代码"时,占位符代码仍然可见,即使占位符可见属性从后面的代码设置为false

时间:2013-08-08 20:10:46

标签: asp.net vb.net asp.net-placeholder

<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”占位符中的内容。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

您需要在<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>

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果visible = false,则不会呈现pnlThanks,因此它不会在源中显示。您可以使用CSS(display = none)在开始时隐藏它并在需要时进行更改。