部分回发后,UpdatePanel中的RegisterPostBackControls

时间:2016-08-24 10:54:02

标签: jquery asp.net c#-4.0 telerik

目前我正致力于将我们的网络应用程序从.Net 3.5迁移到.Net 4.6.1。在此迁移中,我们遇到的问题是Response.Redirect在UpdatePanel中控件不起作用。但后来我们找到了使用命令注册回发的解决方案。

ScriptManager.GetCurrent(Page).RegisterPostBackControl(btnViewHistory);

此语句允许重定向页面,但随后出现另一个问题。

支持我们在UpdatePanel中使用2个按钮进行转发器控制1.编辑,2。ShowMessage。 如果用户进入页面并单击“编辑”按钮,则用户将被重定向到“编辑”页面。它现在工作正常。但是如果用户点击“ShowMessage”按钮,它会显示jQuery弹出一些消息并保持在同一页面上。弹出窗口关闭后,“编辑”按钮停止工作,单击它时不会发生重定向。在devTool中,它显示以下错误。

ScriptResource.axd?d=JnUc-DEDOM5KzzVKtsL1tThQiyHdLKhpowp3haErZKv6k2DZphOCMxhYOmqVubfNB4ASzRZ-WmXlbG…:885 Uncaught Sys.WebForms.PageRequestManagerParserErrorException: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed.

有人可以告诉我在部分回发后如何在UpdatePanel中做RegisterPostBackControls吗?

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是IsInAsyncPostBack

    protected void Page_Load(object sender, EventArgs e)
    {
        if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack == true)
        {
            //do stuff on partial postback
        }

        //if you want buttons in an updatepanel Repeater to trigger a full postback you need to register them for it
        foreach (RepeaterItem item in Repeater1.Items)
        {
            Button btn = item.FindControl("Button1") as Button;
            ScriptManager.GetCurrent(this).RegisterPostBackControl(btn);
        }
    }