Javascript 部分页面回发后的ASP.NET注册脚本(UpdatePanel)

Javascript 部分页面回发后的ASP.NET注册脚本(UpdatePanel),javascript,asp.net,asp.net-ajax,updatepanel,partial-page-refresh,Javascript,Asp.net,Asp.net Ajax,Updatepanel,Partial Page Refresh,我有一个简单的表单(文本框,提交按钮),它被包装在一个更新面板中 <asp:UpdatePanel ID="ReplyUpdatePanel" UpdateMode="Conditional" runat="server"> <ContentTemplate> <asp:Textbox id="ReplyTextBox" runat="server"/> <asp:Button id="SubmitButton" On

我有一个简单的表单(文本框,提交按钮),它被包装在一个更新面板中

<asp:UpdatePanel ID="ReplyUpdatePanel" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
       <asp:Textbox id="ReplyTextBox" runat="server"/>
       <asp:Button id="SubmitButton" OnClick="SubmitButton_Click" runat="server"/>
    <ContentTemplate>
</asp:UpdatePanel>
还有这个

ScriptManager.RegisterStartupScript
都不工作(什么也没发生)

现在我可以使用客户端AJAX库(在部分更新完成后执行客户端脚本)连接到
.add_pageLoaded
函数,但问题是我需要来自服务器的数据,这些数据是在button click事件中创建的

即:

Sys.Application.add_init(函数(){
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(函数(发送方,参数){
var panels=args.get_panelsUpdated();
对于(变量i=0;i
目前我唯一能想到的“黑客”是执行上述操作,但调用一个web服务,再次获取所有数据,然后执行我的脚本。我之所以说“hack”,是因为我不需要进行异步回发,挂接到部分回发后事件处理程序中,然后再次调用服务器以获取之前发布的信息

这似乎是一个普遍的问题。不,我不能删除UpdatePanel(尽管我很想删除),我不想浪费时间争论原因

有没有什么好主意

编辑

关于我需要发送到脚本的数据的澄清:

我在文本框中键入一些文本,单击提交,然后服务器创建一个数据库记录并返回一个对象,该对象具有ID、Name、URL、Blah等属性。这些是脚本需要的值


因此,如果要从客户机代码调用web服务,为了获取刚刚创建的值,我需要进行一些黑客操作(修改最后一条具有文本框值的记录)。这并不理想,一个表单post的两个AJAX调用也不理想。(更新面板回发,然后是web服务调用)。

而不是您希望在此处添加页面加载的
,如下所示:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
  //check here...
});

不同之处在于,当任何部分回发返回时都会运行。

谢谢,但没有区别。我需要从服务器访问值(在服务器端单击事件中创建)。如何使用上述代码?@RPM1984-在隐藏输入中,或通过
ScriptManager.RegisterStartupScript
,当您尝试使用
ScriptManager
时,是否使用UpdatePanel作为第一个参数的控件?就是这样。我用的是“this”,所以我通过了控制。谢谢
Sys.Application.add_init(function () {
                Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function (sender, args) {
                    var panels = args.get_panelsUpdated();
                    for (var i = 0; i < panels.length; i++) {
                        // check panels[i].id and do something
                    }
                });
            });
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function (sender, args) {
  //check here...
});