确定是否以及在.NET中使用JavaScript的pageLoad()中发生了部分回发
据我所知,使用ASP.NET AJAX进行的部分页面更新会导致调用JavaScript pageLoad()事件处理程序 我的问题是:在JavaScript中是否有一种通用的方法可以从pageLoad()函数中确定 i) 是否回发是部分页面更新 ii)如果是,更新了哪个面板确定是否以及在.NET中使用JavaScript的pageLoad()中发生了部分回发,javascript,.net,ajax,postback,Javascript,.net,Ajax,Postback,据我所知,使用ASP.NET AJAX进行的部分页面更新会导致调用JavaScript pageLoad()事件处理程序 我的问题是:在JavaScript中是否有一种通用的方法可以从pageLoad()函数中确定 i) 是否回发是部分页面更新 ii)如果是,更新了哪个面板 我的应用程序使用.NET UpdatePanels和Telerik面板的组合。我正在寻找一种通用(最好是JavaScript)解决方案,它不需要我为每个面板指定唯一的客户端回调函数,也不需要在每个回发事件处理程序中设置一些标
我的应用程序使用.NET UpdatePanels和Telerik面板的组合。我正在寻找一种通用(最好是JavaScript)解决方案,它不需要我为每个面板指定唯一的客户端回调函数,也不需要在每个回发事件处理程序中设置一些标志来向客户端标识自己。要确定回发是否是部分更新,您可以使用
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;
}
参考文献: