2014-05-21 44 views
0

我有一个面板上的内容是改变客户端的一页。例如,我有以下网页表单:如何在发布后保留div内容?

<asp:panel id="panContents" runat="server"> 
    <span>Initial content</span> 
</asp:panel> 

以下jQuery的片段替换DIV客户端的内容当页面第一次加载:在提交页面

$("<%= panContents.ClientId =>") 
    .html("<span>Some content to be maintained after postback</span>") 

后,返回到客户端,该面板的内容恢复到当首次加载页面:

<div> 
    <span>Initial content</span> 
</div> 

是否有可能交后维持面板的内容背所以在提交之前看起来是一样的?所以我结束了后门柱下背部:

<div> 
    <span>Some content to be maintained after postback</span> 
</div> 
+0

你必须告诉服务器,在客户端更改,你可以使用hiddenfield来存储新的值。你可以在服务器端访问它(如果它有'runat = server')并且将它的'Value'赋值给'LblContent.Text'(一个'Label'呈现为'span')。 –

回答

1

面板的内容消失,因为你只是操纵DOM。如果你想保留面板的价值,首先把它放到一个隐藏的领域,然后发布后重新分配文本到面板

1

此内容只存在一个客户端上,因为Panel没有发布任何内容服务器(有点明显)。您可能想要应用的解决方法是检查是否需要在页面加载时运行片段。为此,您可能需要一个带有标志的隐藏字段。

这里是概念的脏证明:

<asp:HiddenField ID="ReplacePanelFlag" runat="server" Value="0" /> 

// check flag on page load 
$(function() { 
    if ($("<%= ReplacePanelFlag.ClientID %>").val() === "1") { 
     //run snippet 
    } 
}); 

// in snippet make sure to set the flag to "1" 
$("<%= panContents.ClientId =>") 
.html("<span>Some content to be maintained after postback</span>"); 
$("<%= ReplacePanelFlag.ClientID %>").val("1");