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

我究竟做错了什么 ?

4

3 回答 3

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>
于 2013-08-08T20:22:32.530 回答
0

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

于 2013-08-09T11:32:53.697 回答
0

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

于 2013-08-08T20:24:00.223 回答