当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  ASP.NET AJAX RC Tip:页面中无UpdatePanel时2

 ASP.NET AJAX RC Tip:页面中无UpdatePanel时2

点击次数:29 次 发布日期:2008-11-26 11:03:08 作者:源代码网
源代码网推荐      请注意此时的UpdateProgress以一个Sys.UI.Control的形式使用$create被创建,而Sys.UI._UpdateProgress(看来ASP.NET AJAX不希望我们直接使用这个类)是在MicrosoftAjaxWebForms.js文件里被引入。
源代码网推荐  
源代码网推荐    于是问题就出现了,如果页面中没有UpdatePanel,那么MicrosoftAjaxWebForms.js文件不会被引入,而那句$create还在!这就导致了JavaScript错误的发生。当时我提供的方法是:那么就在Site.master里强制加上一个UpdatePanel吧。如下:
源代码网推荐  
源代码网推荐  强制UpdatePanel
源代码网推荐  <asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="UP1">
源代码网推荐   <ContentTemplate></ContentTemplate>
源代码网推荐  </asp:UpdatePanel>
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐    这里把UpdateMode设为了Conditional,也就是说,这里的UpdatePanel永远不会被更新,它的作用只是“强迫”MicrosoftAjaxWebForms.js文件被引入。不过这不是个好的解决方案。
源代码网推荐  
源代码网推荐    如果要解决这个问题,不要让$create语句出现不就可以了吗?在查看过代码以后,发现$create语句只会在ScriptManager的EnablePartialRendering属性为True的情况下出现,那么我们就把ScriptManager的这个属性暴露出去吧。我们可以修改一下Site.master.cs中Site类的代码,把它增加一个属性:
源代码网推荐  
源代码网推荐  Site.master.cs
源代码网推荐  public bool EnablePartialRendering
源代码网推荐  {
源代码网推荐   get
源代码网推荐   {
源代码网推荐   return this.ScriptManager1.EnablePartialRendering;
源代码网推荐   }
源代码网推荐   set
源代码网推荐   {
源代码网推荐   this.ScriptManager1.EnablePartialRendering = value;
源代码网推荐   }
源代码网推荐  }
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐    然后在页面里把MasterPage的EnablePartialRendering属性设为False即可。需要注意的是只有Init阶段才能设置ScriptManager的EnablePartialRendering属性。如下:
源代码网推荐  
源代码网推荐  Default.aspx.cs
源代码网推荐  protected override void OnInit(EventArgs e)
源代码网推荐  {
源代码网推荐   base.OnInit(e);
源代码网推荐  
源代码网推荐   (this.Master as Site).EnablePartialRendering = false;
源代码网推荐  }
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐    至此,任务结束。
源代码网推荐  
源代码网推荐  http://www.cnblogs.com/JeffreyZhao/archive/2006/12/20/597416.html
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华