2014-05-21 86 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");