簡體   English   中英

“查看源代碼”時,占位符代碼仍然可見,即使占位符可見屬性從代碼后面設置為false

[英]Placeholder Code still visible when “view source code”, even though placeholder visible property set to false from code behind

<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,則不呈現pnlThanks,因此它不會在源中顯示。 您可以使用CSS(display = none)在啟動時隱藏它並在需要時更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM