欢迎光临 Carey's blog  
首页  |  生活日志  |  CSS+DIV  |  JS日志  |  ASP收集  |  ASP.NET  |  DataBase    |  友情链接  
用户登陆
用户名:
密   码:
验证码: 
 

站点日历
73 2010 - 9 48
   1234
567891011
12131415161718
19202122232425
2627282930


站点统计

最新评论

日志搜索

 标题   内容

给年轻工程师的十大忠告 Office2003注册码-序列号
未知 Ajax研究小结   [ 日期:2006-02-25 ]   [ 来自:本站原创 ]

Ajax最近可谓是流行加火热,为web开发中的刷新问题带来了新的生机与希望。虽然这项技术在很久以前就有人在用,无非是XMLHttpRequest JavaScript的几项技术按一定的方式组合,也算不得什么新技术,但挂了一个名,做了一个封装,还是为不少开发人员提供了很多便捷。因此,我也抽出时间来研究了一下,并且应用到当前的项目里,同时做个小结放在这里。 


 


具体使用: 


1. 在项目中添加引用Ajax.dll (我用的版本是5.7.22.2) 


2. 修改web.config,在里面增加 


<configuration>
  <system.web>
    <httpHandlers>
    <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
    </httpHandlers>  
     
  <system.web>
</configuration> 


 


3. 新建一个实现业务逻辑的类,并在里面增加方法,在方法上面加上[Ajax.AjaxMethod()]。如: 


    /// <summary> 


     /// 业务逻辑的类 


     /// </summary> 


     public class AjaxBLLClass 


     { 


         public AjaxBLLClass() 


         {             


         } 


         [Ajax.AjaxMethod()] 


         public string GetPlaceList(int ClassID) 


         { 


              Advertisement.BLL.ADManage.AdPlace adplace=new Advertisement.BLL.ADManage.AdPlace(); 


              DataSet ds=adplace.GetListByClass(ClassID); 


              string str=""; 


              for(int m=0;m<ds.Tables[0].Rows.Count;m++) 


              { 


                   str+=","+ds.Tables[0].Rows[m]["PlaceID"].ToString()+"|"+ds.Tables[0].Rows[m]["PlaceName"].ToString(); 


              } 


str=str.Substring(1,str.Length-1); 


return str; 


         } 


         


4. 在调用页的.cs的Page_Load事件中增加一行类注册代码 


private void Page_Load(object sender, System.EventArgs e)
 {
   //注册类获得有效的方法
   Ajax.Utility.RegisterTypeForAjax(typeof(AjaxBLLClass));
  }


注意:typeof(AjaxBLLClass)中,AjaxBLLClass是要包含要调用方法的类,即上面第3步新建的业务逻辑类AjaxBLLClass 


5. 在调用页页面文件中或者单独写一个js文件,用Javascript代码调用业务逻辑的类的方法。如: 


              function classResult() 


         { 


              var classid=document.getElementById("DropClassID"); 


              AjaxBLLClass.GetPlaceList(classid.value,get_class_Result_CallBack);//调用业务逻辑类方法 


              


         } 


 


         function get_class_Result_CallBack(response) 


         { 


              if (response.value != null) 


              {                    


                   document.getElementById("DropPlaceID").length=0; 


               var piArray = response.value.split(","); 


          for(var i=0;i<piArray.length;i++) 


          { 


             var ary1 = piArray[i].toString().split("|"); 


             document.getElementById("DropPlaceID").options.add(new Option(ary1[1].toString(),ary1[0].toString())); 


          }  


                   


              }                


              return 


         } 


6. 调用 


<asp:dropdownlist id="DropClassID" runat="server" Width="250px" onchange=” classResult()”></asp:dropdownlist> 


注:如果是低版本的Ajax需修改Global.asax的Application_Start事件,设置Ajax的HandlerPath : 


protected void Application_Start(Object sender, EventArgs e)
  {
     //Ajax.Utility.HandlerPath = "ajax";//老版本的需要
  } 


使用感受:个人认为虽然它从一定程度上解决了页面的刷新问题,但却需要写大量的脚本代码,并且和.net的控件和类库结合还不是很好,还不适合在项目里大量地使用,在一些对刷新要求不是太高的地方还是用ASP.NET的编码方式好一些。 

 示例代码下载


附上一些Ajax资源: 

http://ajax.schwarz-interactive.de 

http://weblogs.asp.net/mschwarz/ 

http://groups.google.com/group/ajaxpro?lnk=li

Google
Web 本站

[ 阅读字体大小: ]  
暂时没有评论
发表评论 - 不要忘了输入验证码哦!
作者: 用户:  密码:   注册? 验证: 
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
 
CopyRight © nmdoor.com,2005-2006, All Rights Reserved 蒙ICP备06001305号
Processed in 0.046875 second(s) , 9 queries