天天看點

在MOSS中使用.Net3.5中的Ajax功能

網上有很多文章介紹如何在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的配置:

在MOSS中使用.Net3.5中的Ajax功能

      <httpHandlers>

在MOSS中使用.Net3.5中的Ajax功能

        <remove verb="*" path="*.asmx"/>

在MOSS中使用.Net3.5中的Ajax功能

        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

在MOSS中使用.Net3.5中的Ajax功能

        <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"/>

在MOSS中使用.Net3.5中的Ajax功能

        <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"/>

在MOSS中使用.Net3.5中的Ajax功能

      </httpHandlers>     

在MOSS中使用.Net3.5中的Ajax功能

      <httpModules>

在MOSS中使用.Net3.5中的Ajax功能

        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

在MOSS中使用.Net3.5中的Ajax功能

      </httpModules>

在MOSS中使用.Net3.5中的Ajax功能

從配置上看相對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進行一些特殊處理。我這裡參考網上的資料寫了一個父類,可以直接從這個父類繼承就可以了。

 1

在MOSS中使用.Net3.5中的Ajax功能

public abstract class AjaxBasePart : System.Web.UI.WebControls.WebParts.WebPart

 2

在MOSS中使用.Net3.5中的Ajax功能

{

 3

在MOSS中使用.Net3.5中的Ajax功能

    private ScriptManager _AjaxManager;

 4

在MOSS中使用.Net3.5中的Ajax功能

 5

在MOSS中使用.Net3.5中的Ajax功能

    public AjaxBasePart()

 6

在MOSS中使用.Net3.5中的Ajax功能

    {

 7

在MOSS中使用.Net3.5中的Ajax功能

    }

 8

在MOSS中使用.Net3.5中的Ajax功能

 9

在MOSS中使用.Net3.5中的Ajax功能

    protected override void OnInit(EventArgs e)

10

在MOSS中使用.Net3.5中的Ajax功能

11

在MOSS中使用.Net3.5中的Ajax功能

        base.OnInit(e);

12

在MOSS中使用.Net3.5中的Ajax功能

13

在MOSS中使用.Net3.5中的Ajax功能

        //取得存在的ScriptManager

14

在MOSS中使用.Net3.5中的Ajax功能

        _AjaxManager = ScriptManager.GetCurrent(this.Page);

15

在MOSS中使用.Net3.5中的Ajax功能

16

在MOSS中使用.Net3.5中的Ajax功能

        if (_AjaxManager == null)

17

在MOSS中使用.Net3.5中的Ajax功能

        {

18

在MOSS中使用.Net3.5中的Ajax功能

            //建立ScriptManager

19

在MOSS中使用.Net3.5中的Ajax功能

            _AjaxManager = new ScriptManager();

20

在MOSS中使用.Net3.5中的Ajax功能

            _AjaxManager.ID = this.ID + "$AjaxManager";

21

在MOSS中使用.Net3.5中的Ajax功能

            _AjaxManager.EnablePartialRendering = true;

22

在MOSS中使用.Net3.5中的Ajax功能

23

在MOSS中使用.Net3.5中的Ajax功能

            if (this.Page.Form != null)

24

在MOSS中使用.Net3.5中的Ajax功能

            {

25

在MOSS中使用.Net3.5中的Ajax功能

                //解決Ajax按鈕隻能執行一次的問題

26

在MOSS中使用.Net3.5中的Ajax功能

                string formOnSubmitAtt = this.Page.Form.Attributes["onsubmit"];

27

在MOSS中使用.Net3.5中的Ajax功能

                if (!string.IsNullOrEmpty(formOnSubmitAtt) && formOnSubmitAtt == "return _spFormOnSubmitWrapper();")

28

在MOSS中使用.Net3.5中的Ajax功能

                {

29

在MOSS中使用.Net3.5中的Ajax功能

                    this.Page.Form.Attributes["onsubmit"] = "_spFormOnSubmitWrapper();";

30

在MOSS中使用.Net3.5中的Ajax功能

                }

31

在MOSS中使用.Net3.5中的Ajax功能

32

在MOSS中使用.Net3.5中的Ajax功能

                this.Page.Form.Controls.AddAt(0, _AjaxManager);

33

在MOSS中使用.Net3.5中的Ajax功能

            }

34

在MOSS中使用.Net3.5中的Ajax功能

        }

35

在MOSS中使用.Net3.5中的Ajax功能

36

在MOSS中使用.Net3.5中的Ajax功能

}

最主要的代碼有兩處:

1、14行的地方取得ScriptManager對象,如果沒有的話才建立,然後在32行的時候作為form的第一個控件插入。因為一個頁面中隻能出現一個ScriptManager對象

2、在26-30之間用來解決UpdatePanel中的按鈕隻能執行一次的情況。在MOSS中直接使用Ajax的控件時存在一些相容性方面的問題,需要進行一些特殊處理。如果不加入這段代碼,那麼在UpdatePanel中出現的按鈕隻能點選一次,下次再點選的時候沒有反應。

    本文轉自永春部落格園部落格,原文連結:http://www.cnblogs.com/firstyi/archive/2008/04/26/1169963.html,如需轉載請自行聯系原作者