持续动态插入内容回发

时间:2011-02-03 18:19:40

标签: javascript jquery asp.net postback

我有一个div让我们说:

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

现在我在这个div中插入了一些html内容,点击了一些按钮(没有回发)。现在,当我对服务器控件提交按钮上的某些操作执行回发时,我希望html(我通过javascript插入)保存在 foo div中。现在我正在考虑采用一个隐藏的输入服务器控件,当表单将被提交时,我将在该隐藏控件中插入foo div的内容,下一次当页面加载回发后我将填充foo div隐藏字段内的内容。我是采用正确的方法,还是我应该选择其他任何好的方法?

1 个答案:

答案 0 :(得分:0)

我认为更好的方法是使用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>

了Serverside:

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