Сохранять динамически вставляемый контент через обратную передачу - PullRequest
1 голос
/ 03 февраля 2011

У меня есть div, скажем:

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

Теперь я вставил html-контент в этот div по нажатию кнопки (без обратной передачи). Теперь, когда я выполняю обратную передачу по какому-либо действию, скажем, на кнопке отправки серверного элемента управления, я хочу, чтобы html (который я вставил через javascript) был сохранен в foo div. Прямо сейчас я думаю взять скрытый серверный элемент управления вводом, и когда форма будет отправлена, я вставлю содержимое foo div в этот скрытый элемент управления, и в следующий раз, когда страница загрузится после обратной передачи, я заполню раздел foo с помощью содержимое внутри скрытого поля. Я иду с правильным подходом или это какой-то другой подход, который я должен выбрать?

1 Ответ

0 голосов
/ 04 февраля 2011

Лучший подход, я думаю, состоит в том, чтобы использовать панель 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();
}
...