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

來源:互聯網
上載者:User
網上有很多文章介紹如何在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中出現的按鈕只能點擊一次,下次再點擊的時候沒有反應。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.