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

Bum*_*mpy 4 .net javascript ajax postback

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

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

i)如果回发是部分页面更新或不.

ii)如果是,则更新哪个小组.

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

Ian*_*Ian 18

要确定回发是否是部分更新,您可以使用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                
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

要获得导致PostBack的更新面板,您可以查看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;
}
Run Code Online (Sandbox Code Playgroud)

参考文献: