<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( 在启动时隐藏它,并在需要时进行更改。