1.ScriptManager在源代码中的位置不正确
每个page只需要一个ScriptManager或者轻量级的ScriptManagerProxy,必须在UpdatePanel之前
2. ScriptManager没有启用EnablePartialRendering,需要设置为true;
3. 局部更新过程没法向页面写入JavaScript
这需要用Scriptmanager的一个静态方法注册客户端脚本即可:
Scriptmanager.RegisterStartupScript(panelID,typeof(UpdatePanel),"scriptname","alert('put something you need')",true);
4.动态加载的用户控件中的UpdatePanel无法正常工作
一般程序员都在Page_Load(obj,e)这个Load的函数里动态加载控件,但是在包含UpdatePanel中将无法正常工作。因为加载太晚了,UpdatePanel
的实现要靠Scriptmanager的帮助,ASP.NET AJAX将在Page的Load的阶段中自动进行这两个控件之间的协调。所以上述在Page_Load()方法中加载
用户控件,已经错过了UpdatePanel和Scriptmanager的沟通的时期。这样新加载的用户控件中的UpdatePanel和页面中的Scriptmanager彼此互不知晓,自然无法得到我们期望的AJAX动态加载用户控件的效果。
解决方法就是将动态加载用户控件的代码移到Page_Init()中就可以了
例如:protected void Page_Init(object sendre,EventArg e)
{
Control myControl;
if(....)
myControl=Page.LoadControl("MyUserControl1.ascx");
else
myControl=Page.LoadControl("MyUserControl2.ascx");
}