天天看點

ajaxpro安裝和使用

1、 ajax.net 做為ajax技術在dotnet 架構下的實作,作者michael schwarz采取了一種封裝效果相當棒的技術:将用戶端處理xml、事件調用方式都封裝在2個javascript檔案中(ajaxpro.prototype.js 和ajaxpro.core.js),同時将這2個重要檔案以資源的形式編譯于dll中,在處理用戶端請求其自定義的.ashx檔案時,傳回這兩個檔案。是以我們在使用ajax.net時需要在web.config中添加如下httphandlers以 ajaxpro.ajaxhandlerfactory來處理.ashx檔案:

ajaxpro安裝和使用
ajaxpro安裝和使用

在<system.web>與</system.web>之間插入以下代碼

ajaxpro安裝和使用

<httphandlers>

ajaxpro安裝和使用

<add verb="post,get" path="ajaxpro/*.ashx" type="ajaxpro.ajaxhandlerfactory, ajaxpro"/>

ajaxpro安裝和使用

</httphandlers>

ajaxpro安裝和使用
ajaxpro安裝和使用

2、在此基礎上,ajax.net開始對要求其處理的方法進行封裝,以便在用戶端通過javascript來調用。首先在使用者必須調用的另一個ashx檔案即 converter.ashx中做了方法的封裝,當然要支援任意多數量的參數及傳回值的處理,然後就是對于服務端的邏輯處理方法所在類的封裝處理。

ajaxpro安裝和使用

如何開始使用ajax.net

ajaxpro安裝和使用

a:擷取ajax.net 可以到 http://www.schwarz-interactive.de/ 下載下傳(目前最新版6.4.15.1.)。

ajaxpro安裝和使用

b:解壓zip并在需要使用的項目中添加對dll的引用(其中ajaxpro.dll為dotnet1.1版,ajaxpro.2.dll 為2.0版)

ajaxpro安裝和使用

c:如同上面所說,在web.config中添加對ashx的處理

ajaxpro安裝和使用

d:在服務端添加ajax.net要處理的方法,假如我們要提供的服務是傳回使用者輸入的字元的md5校驗碼,那麼我們首先要做的是給這個方法加入需要ajax.net處理使用戶端可以直接調用的屬性[ajaxpro.ajaxmethod]如下:

ajaxpro安裝和使用
ajaxpro安裝和使用

[ajaxpro.ajaxmethod]

ajaxpro安裝和使用

public string md5hash(string ssou)

ajaxpro安裝和使用

{

ajaxpro安裝和使用

string sresult  ="";

ajaxpro安裝和使用
ajaxpro安裝和使用

byte[] bybuffer =  system.text.encoding.utf8 .getbytes(ssou);

ajaxpro安裝和使用

system.security.cryptography.md5cryptoserviceprovider  md = new system.security.cryptography.md5cryptoserviceprovider();

ajaxpro安裝和使用
ajaxpro安裝和使用

byte[] result = md.computehash(bybuffer);

ajaxpro安裝和使用
ajaxpro安裝和使用

for(int i=0; i< result.getlength(0); i++)

ajaxpro安裝和使用
ajaxpro安裝和使用

  sresult += result.tostring("x2");

ajaxpro安裝和使用

}

ajaxpro安裝和使用
ajaxpro安裝和使用

return sresult;

ajaxpro安裝和使用
ajaxpro安裝和使用
ajaxpro安裝和使用
ajaxpro安裝和使用

然後在page_load中注冊此類

ajaxpro安裝和使用

private void page_load(object sender, system.eventargs e)

ajaxpro安裝和使用
ajaxpro安裝和使用

       ajaxpro.utility.registertypeforajax

ajaxpro安裝和使用

       (typeof(webform1));

ajaxpro安裝和使用

    }

ajaxpro安裝和使用

e:在用戶端調用方法:

ajaxpro安裝和使用

<script type="text/javascript">

ajaxpro安裝和使用

function getmd5()

ajaxpro安裝和使用
ajaxpro安裝和使用

  var a = document.getelementbyid("source").value;

ajaxpro安裝和使用

    var c = tajax.webform1.md5hash(a);

ajaxpro安裝和使用

    alert(c.value);

ajaxpro安裝和使用
ajaxpro安裝和使用

</script>

ajaxpro安裝和使用

<input type="text" id="source" name="source" >

ajaxpro安裝和使用

<input type="button" name="sub" onclick="getmd5()" value="送出">

ajaxpro安裝和使用

當然這裡tajax.webform1就是實作類的全名了(包括namespace).

ajaxpro安裝和使用

這樣一個簡單應用就算完成了,怎麼樣,是不是簡單的很?在這麼簡單的使用了ajax.net後你是不是和我一樣覺得不滿足,好像還有一些工作可以做?對了,接下來我們将繼續深度使用并實作無aspx檔案的邏輯層和表現層的徹底分離。

ajaxpro安裝和使用

應用ajax.net在asp.net中實作無aspx檔案應用,徹底分離邏輯層和表現層

ajaxpro安裝和使用

asp.net 中居然沒有aspx檔案,要如何實作呢?我不知道你想過沒有,我反正覺得這是個艱巨的任務;因為aspx檔案做為一個橋梁連接配接了前台和背景,一個 runat=server為我們做了太多的事情,我們自己實作也不是完全不可以,不過費盡周折的意義可能并不大;說到意義——這樣做的意義我想不用我說,大家自己想想吧,呵呵。閑話少絮。我們接着進入正題。

ajaxpro安裝和使用

通過前面的描述,我想大家一定可以猜到關鍵點。對了,就是那幾個js,我們啟動程式,檢視源檔案,奧妙就在這裡:

ajaxpro安裝和使用

<script type="text/javascript" src="/tajax/ajaxpro/prototype.ashx"></script>

ajaxpro安裝和使用

<script type="text/javascript" src="/tajax/ajaxpro/core.ashx"></script>

ajaxpro安裝和使用

<script type="text/javascript" src="/tajax/ajaxpro/converter.ashx"></script>

ajaxpro安裝和使用

<script type="text/javascript" src="/tajax/ajaxpro/tajax.webform1,tajax.ashx"></script>

ajaxpro安裝和使用

注:tajax在vb中稱為項目名稱.在c#上則為名稱空間名.webform1為類名

ajaxpro安裝和使用

前面3個檔案我就不在多說,前面已經說過,我們隻看最後一個,那不正是ajax.net對我們服務端類的封裝嗎?

ajaxpro安裝和使用

addnamespace("tajax");

ajaxpro安裝和使用

tajax.webform1_class = class.create();

ajaxpro安裝和使用

object.extend(tajax.webform1_class.prototype, object.extend(new ajaxpro.ajaxclass(), {

ajaxpro安裝和使用

       md5hash: function(ssou) {

ajaxpro安裝和使用

              return this.invoke("md5hash", {"ssou":ssou}, this.md5hash.getarguments().slice(1));

ajaxpro安裝和使用

       },

ajaxpro安裝和使用

       initialize: function() {

ajaxpro安裝和使用

              this.url = ''/tajax/ajaxpro/tajax.webform1,tajax.ashx'';

ajaxpro安裝和使用

       }

ajaxpro安裝和使用

}));

ajaxpro安裝和使用

tajax.webform1 = new tajax.webform1_class();

ajaxpro安裝和使用
ajaxpro安裝和使用

既然原理明白了,分離就簡單了,參照上一部份,我們的步驟從d開始改變

ajaxpro安裝和使用

d:建立一個類admin,将webform1.aspx.cs中的代碼拿過來。

ajaxpro安裝和使用

注:在vb.net中拷過來時隻需拷貝md5hash那段函數即可.不必再構造函數中注冊此類.c#中我沒試過

ajaxpro安裝和使用

    <ajaxpro.ajaxmethod()> _

ajaxpro安裝和使用

    public function md5hash(byval ssou as string) as string

ajaxpro安裝和使用

        dim sresult as string = ""

ajaxpro安裝和使用

        dim bybuffer as byte() = system.text.encoding.utf8.getbytes(ssou)

ajaxpro安裝和使用

        dim md as system.security.cryptography.md5cryptoserviceprovider = new system.security.cryptography.md5cryptoserviceprovider

ajaxpro安裝和使用

        dim result as byte() = md.computehash(bybuffer)

ajaxpro安裝和使用

        dim i as integer

ajaxpro安裝和使用

        for i = 0 to result.getlength(0) - 1

ajaxpro安裝和使用

            sresult += result(i).tostring("x2")

ajaxpro安裝和使用

        next

ajaxpro安裝和使用

        return sresult

ajaxpro安裝和使用

    end function

ajaxpro安裝和使用
ajaxpro安裝和使用

建立一個htm檔案include.htm,将前述四行調用放在這裡

ajaxpro安裝和使用
ajaxpro安裝和使用

建立一個htm檔案test.htm,内容當然就是前面的用戶端表示層。重要的一點就是要添加一個iframe如下:

ajaxpro安裝和使用

<iframe name="include" marginwidth=0 marginheight=0  src="include.htm" frameborder=0></iframe>

ajaxpro安裝和使用

同樣,修改調用為

ajaxpro安裝和使用
ajaxpro安裝和使用

<script type="text/javascript">...

ajaxpro安裝和使用
ajaxpro安裝和使用
ajaxpro安裝和使用

...{

ajaxpro安裝和使用

    var a  = document.getelementbyid("source").value;

ajaxpro安裝和使用

    var c = include.tajax.admin.md5hash(a);

ajaxpro安裝和使用
ajaxpro安裝和使用
ajaxpro安裝和使用
ajaxpro安裝和使用

擴充:如果多處調用而且調用方法較長,你當然可以再對應每個業務類做個js檔案,将其中的調用放在一起。 

繼續閱讀