惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cisco Talos Blog
Cisco Talos Blog
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
Project Zero
Project Zero
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
V
Vulnerabilities – Threatpost
NISL@THU
NISL@THU
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Palo Alto Networks Blog
博客园_首页
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Last Week in AI
Last Week in AI
量子位
Security Latest
Security Latest
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
博客园 - 【当耐特】
T
Threat Research - Cisco Blogs
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
腾讯CDC
宝玉的分享
宝玉的分享
V2EX - 技术
V2EX - 技术
P
Privacy International News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
Apple Machine Learning Research
Apple Machine Learning Research
Jina AI
Jina AI
美团技术团队
Hacker News: Ask HN
Hacker News: Ask HN
人人都是产品经理
人人都是产品经理
S
Securelist
S
Security Affairs
WordPress大学
WordPress大学
J
Java Code Geeks
月光博客
月光博客
N
News and Events Feed by Topic
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
C
CERT Recently Published Vulnerability Notes
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tailwind CSS Blog

博客园 - 永春

随笔 随笔 asp+access在64位上的问题 换个活法 项目做的很无语 五分钟叫你看懂美国金融危机的成因和巨大危害[转] Sqlserver中的日期类型值不能小于1753年 C#读取WORD时发生“拒绝访问”及“消息筛选器显示应用程序正在使用中”异常的处理 Asp.Net之自定义表达式构造器(ExpressionBuilder) [Sharepoint2007对象模型]第三回:Web应用程序(SPWebApplication) Sharepoint2007对象模型系列 [Sharepoint2007对象模型]第二回:Web应用程序服务(SPWebService) [Sharepoint2007对象模型]第一回:服务器场(SPFarm) C#强化系列文章九:代码访问安全性使用 项目经理的个人修养 《博客园精华集--Sharepoint分册》第三轮结果 《博客园精华集》Sharepoint+MOSS分册第2轮筛选结果文章列表 Asp.Net页面执行流程分析 C#强化系列文章八:HttpModule,HttpHandler,HttpHandlerFactory简单使用
在MOSS中使用.Net3.5中的Ajax功能
永春 · 2008-04-26 · via 博客园 - 永春

网上有很多文章介绍如何在MOSS中使用Ajax1.0的框架。其实自从.net3.5推出之后,在.net3.5中已经自带了Ajax的功能。本文主要介绍如何在VS2005中使用.net3.5中的Ajax功能,以及如何在MOSS中使用.net3.5中的Ajax功能。

首先肯定需要下载一个.net3.5,这个网上有很多。
下面就主要介绍一些和Ajax1.0在使用和配置方面有差别的地方,至于.net3.5中Ajax的具体使用和Ajax1.0是差不多的,园子里也有很多的介绍文章。

一、在VS2005中使用
以前Ajax1.0的时候可以下载一个VS2005的插件,安装好之后会多出一个特定的Ajax的项目,创建这种类型的项目就可以使用Ajax1.0的功能了。
这个插件主要做了两件事:
1、在网站的web.config中加入了一些配置项。
在.net3.5的时候我们可以手工在web.config中加入Ajax的配置:

      <httpHandlers>
        
<remove verb="*" path="*.asmx"/>
        
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
      
</httpHandlers>     
      
<httpModules>
        
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      
</httpModules>

从配置上看相对Ajax1.0的时候,更加简单了,而且使用的也是.net比较规范的方法,通过注册一些httphandle和httpmodule来捕获特定的Ajax的请求达到异步刷新的效果。

2、在工具箱中加入Ajax的控件
我们也可以手工在VS2005的工具箱上-〉右键-〉选择项....,然后在".net framework组件"的tab中选择所有程序集名称为System.Web.Extensions(3.5.0.0)的控件,插入就可以了。
加入之后就会在工具箱中看到相应的控件(当然只是一些基本的控件),然后就可以按照Ajax1.0的方法进行开发了。

二、在MOSS中使用.net3.5中的Ajax功能
1、修改配置
这一步和上面一样,将上面的配置加入对应MOSS站点的web.config文件中就可以了

2、在VS2005中编写Webpart
这个也是按照常规的方式编写webpart,在这个webpart中使用Ajax中的控件。但是自己的webpart要针对Ajax进行一些特殊处理。我这里参考网上的资料写了一个父类,可以直接从这个父类继承就可以了。

 1public abstract class AjaxBasePart : System.Web.UI.WebControls.WebParts.WebPart
 2{
 3    private ScriptManager _AjaxManager;
 4
 5    public AjaxBasePart()
 6    {
 7    }

 8
 9    protected override void OnInit(EventArgs e)
10    {
11        base.OnInit(e);
12
13        //取得存在的ScriptManager
14        _AjaxManager = ScriptManager.GetCurrent(this.Page);
15
16        if (_AjaxManager == null)
17        {
18            //创建ScriptManager
19            _AjaxManager = new ScriptManager();
20            _AjaxManager.ID = this.ID + "$AjaxManager";
21            _AjaxManager.EnablePartialRendering = true;
22
23            if (this.Page.Form != null)
24            {
25                //解决Ajax按钮只能执行一次的问题
26                string formOnSubmitAtt = this.Page.Form.Attributes["onsubmit"];
27                if (!string.IsNullOrEmpty(formOnSubmitAtt) && formOnSubmitAtt == "return _spFormOnSubmitWrapper();")
28                {
29                    this.Page.Form.Attributes["onsubmit"= "_spFormOnSubmitWrapper();";
30                }

31
32                this.Page.Form.Controls.AddAt(0, _AjaxManager);
33            }

34        }

35    }

36}

最主要的代码有两处:
1、14行的地方取得ScriptManager对象,如果没有的话才创建,然后在32行的时候作为form的第一个控件插入。因为一个页面中只能出现一个ScriptManager对象
2、在26-30之间用来解决UpdatePanel中的按钮只能执行一次的情况。在MOSS中直接使用Ajax的控件时存在一些兼容性方面的问题,需要进行一些特殊处理。如果不加入这段代码,那么在UpdatePanel中出现的按钮只能点击一次,下次再点击的时候没有反应。