【问题标题】:Placeholder Code still visible when "view source code", even though placeholder visible property set to false from code behind占位符代码在“查看源代码”时仍然可见,即使占位符可见属性从后面的代码设置为 false
【发布时间】:2013-10-22 23:02:43
【问题描述】:
<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”占位符内的内容。

我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    您需要将所有控件都放在&lt;form&gt; 标记内,因为 ASP.NET 依赖于form 来执行回发等操作。

    您的页面中只能有一个&lt;form&gt; 标签。

    将您的代码更改为:

    <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>
    

    【讨论】:

    • 目前只有一种带有runat=server标签的表单
    【解决方案2】:

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

    【讨论】:

    • 彻底检查。没找到:(
    【解决方案3】:

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

    【讨论】:

    • 提交时,从后面的代码中设置为 visible = true。见上面的代码。
    猜你喜欢
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 2013-01-20
    • 2013-03-06
    • 1970-01-01
    • 2020-03-20
    相关资源
    最近更新 更多