Лучший подход, я думаю, состоит в том, чтобы использовать панель asp для 'foo' вместо 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>
Серверная часть:
protected void btnContent_OnClick(object sender, EventArgs args)
{
litFoo.Text = loadContent();
}