DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> 征戰AjaxPro-AjaxPro實例
征戰AjaxPro-AjaxPro實例
編輯:AJAX詳解     
本來不想寫這篇文章,可是這個東西竟然搞掉我一天的時間,雖然不是什麼技術上的難題,可是畢竟找到了一些注意到的地方。在這其中,從網上找了好久,有一篇《>有關AjaxPro在內容頁(相對於母板頁)注冊後,客戶端無法調用AJax方法的問題 》對我幫助挺大。如這個題目,我也是要實現的是相對於母板頁中,客戶端無法識別注冊的類的問題。
    項目環境:
    1、創建一個web子項目。
    2、在子項目的web.config裡面中添加如下代碼:
    
         
    

    3、定義母板頁。在母板頁面文件中定義如下Javascript函數:
    
    其中,BaseSetting為內容頁中的類。lblMessage為內容頁中一個lable的ID,btnAdd為內容頁中一個button的ID。
    4、定義內容頁。如下:
    <%@ Page Language="vb" AutoEventWireup="false" MasterPageFile="/DRPManagement/master/master.Master" CodeBehind="BaseSetting.ASPx.vb" Inherits="DRPManagement.BaseSetting" 
    title="無標題頁" %>
    <%@ MasterType VirtualPath ="/DRPManagement/master/master.Master" %>
    
         級別編號:
                         

    
    5、在內容頁的page_load裡面注冊BaseSetting,如下所示:
     AjaxPro.Utility.RegisterTypeForAJax(GetType(BaseSetting))
    開始的時候總是提示:BaseSetting未定義。
    在網上找到上面的那篇文章後,把上面第三步的function VerifySn(Code)改成如下所示:
     function VerifySn(Code)
        {
            DRPManagement.BaseSetting.GetReturnCode(Code, IsSnExist_callback);
        }  
    但提示DRPManagement未定義,通過查看頁面代碼,由AJaxPro生成的JS引用中與我這裡的類和命名空間是一致的,為什麼找不到呢,以上所有步驟都是正確的,我單獨建了一個項目,按上面的做法,可以成功,於是想到會不會是由於web.config中的配置。由於把子項目中的 
    
         
    

拷備到主項目中的web.config中,這次通過跟蹤Javascript則可以看到上面的DRPManagement.BaseSetting有效了,但是當執行到
    function IsSnExist_callback(result)
        {
            var msg = document.getElementById('lblMessage');
            var bun = document.getElementById('btnAdd');
            var value = result.value;
            if( value == '1' )
            {
                msg.innerHtml = '此編號可用!';
                msg.style.color='green';
                bun.disabled=false;
                return false;            
            }            
            else
            {
                msg.innerHtml = '此編號已經存在!';
                msg.style.color='red';   
                bun.disabled=true;
                return false; 
            }
        }
這個函數的時候,則msg這個變量為空,這說明'lblMessage'是無效的標識,大家知道,在最後生成的頁面中,有些服務器控件的ID,都被冠以一些前綴來引用,於是查看頁面文件,果然'lblMessage'與'btnAdd'控件的ID變成了ctl00_ContentPlaceHolder1_lblMessagectl00_ContentPlaceHolder1_btnAdd,於是把上面的 var msg = document.getElementById('lblMessage');
    var bun = document.getElementById('btnAdd');
改成 var msg = document.getElementById('ctl00_ContentPlaceHolder1_lblMessage');
       var bun = document.getElementById('ctl00_ContentPlaceHolder1_btnAdd');
通過跟蹤,代碼已經很好的工作了。
注意:
    要進行驗證的textbox的屬性不能設置AutoPostBack ="true"這一項,否則,在每次執行的時候,都會觸發AJaxPro的dispose函數,而使調用失效。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved