2011-02-03 49 views
1

我有一個div讓說:堅持動態插入的內容翻過回傳

<div id="foo"> 
</div> 

現在我插入一些HTML內容,此DIV上的一些按鈕,點擊(無回傳)。現在,當我對服務器控件提交按鈕執行回發操作時,我希望html(通過javascript插入)保留在foo div中。現在我正在考慮採用隱藏的輸入服務器控件,當表單將被提交時,我將在該隱藏控件中插入foo div的內容,下一次在回發後加載頁面時,我將填充foo div隱藏字段內的內容。我是否正確地採取行動,還是我們應該選擇的其他好方法?

+0

這是我使用的方法。您必須在表單輸入字段中的某個位置添加客戶端生成的內容,否則它將不會回發到服務器。 – toddles2000 2011-02-03 19:25:26

回答

0

我認爲一個更好的方法是使用一個asp面板代替'div',然後用你的按鈕作爲觸發器包裝在更新面板中。這將允許您使用ajax回發來設置服務器端面板的內容。

但是,如果你決定使用你所提到的方法,你可能可以做類似如下:

標記:

<asp:Hidden ID="hdnContent" Value="" runat="server"/> 
    <div id="foo"></div> 

腳本:

$(document).ready(function() { 

    $('#foo').html($('#<%= hdnContent.ClientID %>').val()); 

    $('#trigger').click(function() { 

     var content = loadSomeContent(); 

     $('#foo').html(content); 
     $('#<%= hdnContent.ClientID %>').val(content); 

    }); 

}); 

這裏是更新面板的可能解決方案:

標記:

<asp:UpdatePanel runat="server"> 
    <ContentTemplate> 

     <div id="foo"> 
      <asp:Literal ID="litFoo" runat="server"/> 
     </div> 

     <asp:Button ID="btnContent" Text="Insert Content" OnClick="btnContent_OnClick" runat="server"/> 
    </ContextTemplate> 
</asp:UpdatePanel> 

Serverside集團:

protected void btnContent_OnClick(object sender, EventArgs args) 
{ 
    litFoo.Text = loadContent(); 
} 
+0

你可以請更清楚更新面板的訣竅...?我沒有得到代碼...請更新代碼.... – 2013-02-04 14:00:13