.NET Ajax的无刷新技术实例详解

作者:网络 来源:佚名 更新时间:2008-02-06 01:48:33 点击:
下载一个.net ajax开发包,该开发包包括asp2.0和目前asp1.1版使用的ajax,详细地址参见http://ajax.schwarz-interactive.de/,接下来,开始。

  1. 新建一个项目,在引用中添加引用ajax.dll,ajax.dll位于下载的压缩包里面。

  2.建立httphandler,在web.config里面加上:

<configuration>lt;system.web>lt;httphandlers>lt;add verb="post,get" path="ajax/*.ashx"type="ajax.pagehandlerfactory,ajax" />lt;/httphandlers> <system.web>lt;/configuration>

  3.新建一个类demomethods,这个类实现获取客户端mac地址:

using system;using system.web;namespace ajaxsample{/**//// <summary>/// summary description for methods./// </summary>ublic class demomethods{[ajax.ajaxmethod]ublic string getcustomermac(string clientip) //这里输入客户端ip,这个函数知识测试用,你也可以写一个其他的简单一点的函数代替{ tring mac = "";system.diagnostics.process process =new system.diagnostics.process();rocess.startinfo.filename = "nbtstat";rocess.startinfo.arguments = "-a "+clientip;rocess.startinfo.useshellexecute = false;rocess.startinfo.createnowindow = true;rocess.startinfo.redirectstandardoutput = true;process.start();string output = process.standardoutput.readtoend();int length = output.indexof("mac address = ");if(length>0){mac = output.substring(length+14, 17);}process.waitforexit();return mac.replace("-", "").trim();}}}

  4.写javascript,新建一个名为default.js文件如下

function getmac(){var clientip="192.168.0.1";//document.getelementbyid("mac").value=demomethods.getcustomermac(clientip).valuealert(demomethods.getcustomermac(clientip).value);}

  5.在某个aspx页面放上一个html 的button在页面上中引用default.js :

lt;script language="javascript"src="default.js"></script>

  在input的onclick事件中加上

lt;input  type="button"

  value="客户端获取ip" >

  6.在page页面的page_load事件中加上

private void page_load(object sender, system.eventargs e){// 在此处放置用户代码以初始化页面ajax.utility.registertypeforajax(typeof(ajaxsample.demomethods));}

  注意:typeof(ajaxsample.demomethods)中,ajaxsample是命名空间,demomethods是要包含要调用方法的类,即上面第3步.新建类demomethods

7.修改global.asax的application_start事件,设置ajax的handlerpath :

protected void application_start(object sender, eventargs e){ajax.utility.handlerpath = "ajax";}


  运行看看效果。是不是没有刷新就在服务器端取到客户端的mac地址?

  需要注意的是:该版本的.net ajax需要手工在中global.asax加上ajax.utility.handlerpath = "ajax"; 配置文件web.config必须加上httphandler的配置信息!

  该开发包的新版本还没有来得及体验,估计新版本中会方便一些,可能会去掉手动的设置global.asax的application_start事件中加上ajax.utility.handlerpath = "ajax";以及其他麻烦的设置!