为什么安装ASP.NET AJAX RC之后,某些页面总是在创建UpdateProgress时出现脚本错误。当时给了一个不太好的解决方案,刚才简单看了一下 System.Web.Extensions.dll中的相关实现,得出了一个更好的解决方案,在这里简单地说一下。
首先,我模拟一个“事发现场”,由此开始解决问题:一般来说,在所有的页面中可能需要统一的Updating Animation,于是可能会将一个UpdateProgress连同ScriptManager放在MasterPage中,如下:
Site.master
<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug">
</asp:ScriptManager>
<asp:ContentPlaceHolder id="Main" runat="server"></asp:ContentPlaceHolder>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
Hello World!
</ProgressTemplate>
</asp:UpdateProgress>
如果直接以此生成一个页面,并随意加上一个UpdatePanel:
Default.aspx
<asp:Content ID="Content1" ContentPlaceHolderID="Main" Runat="Server">
<asp:UpdatePanel runat="server">
<ContentTemplate>
...
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
此时生成的HTML为:
HTML
...
<form>
...
<script src="/AjaxEnabledWebSite/WebResource.axd?..."
type="text/javascript"></script>
<!-- MicrosoftAjax.js -->
<script src="/AjaxEnabledWebSite/ScriptResource.axd?..."
type="text/javascript"></script>
<!-- MicrosoftAjaxWebForms.js -->
<script src="/AjaxEnabledWebSite/ScriptResource.axd?..."
type="text/javascript"></script>
...
<script type="text/javascript">
<!--
Sys.Application.initialize();
Sys.Application.add_init(function() {
$create(
Sys.UI._UpdateProgress,
{"associatedUpdatePanelId":null,
"displayAfter":500,
"dynamicLayout":true},
null,
null,
$get("ctl00_UpdateProgress1"));
});
// -->
</script>
...
</form>
...
请注意此时的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;
}
发表评论
-
asp.net中使用UrlReWriter 小结
2009-01-15 14:44 1799UrlRewriter 是微软封装好了的一个URL重写组件。使 ... -
项目文件“ ”已被重命名或已不在解决方案中
2009-01-13 16:52 2536昨晚在家里做那个三层架构的新闻发布系统,做得一半了,今天拿到公 ... -
.NET中使用三层构架如何从DAL层读取web.config中的数据库连接字符串!
2009-01-13 16:24 2374using System; using S ... -
Visual Studio 2005/2008 调试出现“无法显示该网页”!
2009-01-13 16:11 2539调试Web程序的时候,突然页面不能显示出来,老是显示着“网页无 ... -
.NET使用一般处理程序生成验证码!
2009-01-13 16:08 862<%@ WebHandler Language=&quo ... -
关于.net发送EMAIL的总结
2009-01-13 16:03 1242①导入相应的包: using System.Web.M ... -
Repeater控件中点击按钮后获取某一行的数据!
2009-01-13 15:59 2891其实和GridView差不多的,如果模板中是有按钮之类的可以 ... -
利用BulletedList的DataBound事件设置BulletedList的超链接!
2009-01-13 15:57 1674前台页面代码: <asp:BulletedList ... -
在ASP.NET中如何在前台使用urlencode!
2009-01-13 15:54 959<a href='ShowProParam.asp ... -
NET使用了UpdatePanel后如何弹出对话框!
2009-01-13 15:51 1241ScriptManager.RegisterStartupS ... -
GridView模板列中的TextBox的ontextchanged事件中获取当前行的某列!
2009-01-13 15:48 1818GridView模板列有一TextBox,TextBox的Au ... -
在前台ASPX页面中直接判断绑定的数据是否为空!
2009-01-13 15:47 2361用GridView或其他控件绑定数据的时候,有时候需要判断从数 ... -
在GridView的RowDataBound事件中获取某行某列的值!
2009-01-13 15:45 5191在目前的工作中经常用到,特此记录,特别是那个 DataRowV ... -
ASP.NET中把2008-9-6形式的字符串转成2008-09-06
2009-01-13 15:44 785上网搜索了好一会,解决方法如下: 可以利用.NET中格 ... -
ASP.NET中用JS弹出模态对话框后在里面的分页的问题!
2009-01-13 15:42 2239下面是我打开模态对话框的JS函数: <script ...
相关推荐
其中,UpdatePanel作为ASP.NET AJAX Extensions的重要组成部分之一,其设计目的就是为了简化Web应用程序中实现局部刷新的过程。 UpdatePanel控件允许开发者在不重新加载整个页面的情况下更新页面的一部分内容,从而...
UpdatePanel是ASP.NET AJAX库中的核心组件之一,用于实现页面的部分区域(称为“更新面板”)的无刷新更新。通过在页面上添加UpdatePanel和ScriptManager控件,可以轻松地将传统的全页面回发转变为局部更新。...
在ASP.NET AJAX框架中,ScriptManager组件扮演着至关重要的角色,它是整个AJAX功能的基础,使得开发者能够轻松地在网页上集成客户端脚本和服务端组件。 ScriptManager的主要职责包括: 1. **加载和注册JavaScript...
ASP.NET_AJAX入门系列:概述.doc ASP.NET_AJAX_在Web开发中的应用.doc ASP.NET_AJAX入门系列:Timer控件简单使用....ASP.NET_AJAX入门系列:在母版页中使用UpdatePanel.doc ASP.NET_AJAX入门系列:自定义异常处理.doc
8. **ASP.NET AJAX**:提供异步更新页面的能力,提高用户体验。学习如何使用UpdatePanel、ScriptManager和AJAX控件。 9. **Web部署**:涵盖IIS配置、发布工具(如Web Deploy)的使用,以及调试和性能调优技巧。 10...
- **ScriptManager**:它是ASP.NET AJAX页面中的关键组件,负责管理客户端脚本、注册AJAX库和处理AJAX请求。 **3. ASP.NET AJAX开发** - **客户端脚本编程**:通过JavaScript API,开发者可以自定义AJAX行为,如...
1. **UpdatePanel**:这是一个服务器控件,它定义了页面上的一个区域,该区域可以使用AJAX进行无刷新更新。UpdatePanel内的控件交互不会导致整个页面生命周期重新运行,而是通过异步调用来实现局部刷新。 2. **...
在ASP.NET框架中,AJAX扩展了传统的Web开发模式,允许开发者创建部分页面更新,而不是整个页面刷新,从而提升了用户体验。本资源包含了ASP.NET AJAX程序设计的源码,这对学习和理解这一技术具有极大的帮助。 首先,...
在这个"ASP.NET AJAX核心控件示例"中,我们将探讨四个关键的控件:ScriptManager、UpdatePanel、UpdateProgress和Timer,它们在实现页面无刷新更新和优化用户体验方面起着重要作用。 1. **ScriptManager**: ...
2. **AJAX调用**:使用ASP.NET AJAX的UpdatePanel或jQuery的$.ajax方法,实现当用户点击“注册”按钮时,仅更新表单的部分区域,而不是整个页面。这使得注册过程看起来更即时,减少了用户的等待时间。 3. **服务器...
1. 引入必要的引用:在ASP.NET页面中添加ScriptManager控件,并确保引入ASP.NET AJAX库。 2. 添加UpdatePanel:在需要异步更新的区域放置UpdatePanel。 3. 使用控件或行为:根据需求选择合适的控件或行为,并在页面...
ajax技术,无刷新技术 导读:ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持...
UpdatePanel是ASP.NET AJAX中的一种控件,它允许页面的部分区域进行异步更新,而无需完全刷新整个页面,从而提高了用户体验。 课程可能会涵盖以下知识点: 1. **异步处理**:讲解ASP.NET AJAX如何通过...
**客户端AJAX与ASP.NET AJAX** 客户端AJAX(Asynchronous JavaScript and XML)是Web开发中的一个技术,它允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。这种技术极大地提升了用户体验...
ASP.NET 是微软开发的一种用于构建动态...总的来说,ASP.NET中的无刷新页面实现主要依赖于AJAX技术和UpdatePanel控件,它使得Web应用更加高效且用户友好。掌握这一技术,对于开发响应快速、交互性强的Web应用至关重要。
1. **UpdatePanel**:这是ASP.NET AJAX中最常用的控件,它允许在不刷新整个页面的情况下更新网页的一部分。UpdatePanel内部的操作会在服务器端执行,然后将结果返回到客户端,更新对应的HTML部分。 2. **...
1. UpdatePanel:这是ASP.NET AJAX中最常见的控件,它允许在后台异步处理服务器端事件,而无需完整页面生命周期。UpdatePanel内的控件更新不会触发整个页面的回发,而是通过XMLHttpRequest发送请求,服务器返回更新...
在描述中提到的,如评分功能、无刷新验证用户名以及ajax级联菜单等,都是ASP.NET AJAX控件实现的典型应用场景。 评分功能通常通过AJAX实现无刷新的星评系统,用户可以无需等待整个页面刷新即可完成评分,并实时显示...
【微软ASP.NET AJAX框架剖析】 ASP.NET AJAX框架是微软针对AJAX(Asynchronous JavaScript and XML)技术开发的一个全面的Web开发框架,旨在提供一个高效、易于使用的开发环境,以创建以用户为中心的Web应用程序。...