小编典典

使用.NET中的JavaScript确定在pageLoad()中是否发生以及发生了哪些部分回发

ajax

据我了解,使用ASP.NET AJAX进行部分页面更新会导致调用JavaScript pageLoad()事件处理程序。

我的问题:在pageLoad()函数中是否有一种通用的JavaScript确定方法…

i)回发是否是部分页面更新。

ii)如果是,则更新哪个面板。

我的应用程序使用.NET UpdatePanels和Telerik
RadAjaxPanels的组合。我正在寻找一种通用(最好是JavaScript)解决方案,该解决方案不需要我为每个面板指定唯一的客户端回调函数,也不需要在每个回发事件处理程序中设置一些标志以将其自身标识给客户端。


阅读 260

收藏
2020-07-26

共1个答案

小编典典

要确定回发是否是部分更新,可以使用ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack。这是一个例子:

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        // get a reference to ScriptManager and check if we have a partial postback
        if (ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack)
        {
            // partial (asynchronous) postback occured
            // insert Ajax custom logic here
        }
        else
        {
            // regular full page postback occured
            // custom logic accordingly                
        }
    }
}

要获取导致回发的更新面板,您可以对其进行调查ScriptManager.GetCurrent(Page).UniqueID和分析。这是一个这样做的例子:

public string GetAsyncPostBackControlID()
{
    string smUniqueId = ScriptManager.GetCurrent(Page).UniqueID;
    string smFieldValue = Request.Form[smUniqueId];

    if (!String.IsNullOrEmpty(smFieldValue) && smFieldValue.Contains("|"))
    {
        return smFieldValue.Split('|')[0];
    }

    return String.Empty;
}
2020-07-26