发新话题
打印

初次体验.NET Ajax无刷新技术

初次体验.NET Ajax无刷新技术


早就听说Ajax技术了,传说中是一种很牛的东西,号称无刷新,其实是在web上通过javascript,使用异步的xmlhttp请求,实现无刷新的web界面。可惜一直没有体验过, 先后听做PHP的朋友用过PHP的Ajax开发包,而且做了很多很酷的东西,使小生羡慕不已。 今天下了一个.net Ajax开发包,该开发包包括ASP2.0和目前ASP1.1版使用的Ajax,详细地址参见http://ajax.schwarz-interactive.de/,接下来,开工。
5 c4 a2 y4 `- I& ]+ O/ v$ }% g+ D0 H
   1. 新建一个项目,在引用中添加引用Ajax.dll,Ajax.dll位于下载的压缩包里面。   # e' p! t' k: u: @$ D' a8 _7 P
# D% d' |$ B0 z# Y% ^
   2.建立HttpHandler,在web.config里面加上 <configuration> ( T' e  ~; T3 v7 a. b, K
<system.web>
7 k% j* i3 p' i( f- b<httpHandlers> / k! E/ Z& J3 I" \' e
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" /> 0 o8 ]6 h) z: s7 ~. B! i
</httpHandlers>
! }" `& z5 V5 @* t* b... 3 d. P$ p6 f! W$ y
<system.web>
2 q' [( @7 t2 R</configuration> 3.新建一个类DemoMethods,这个类实现获取客户端MAC地址: using System; ; ]2 K  {# u% H% Y  ^% c
using System.Web;
$ l2 s5 X& ^; a6 p8 jnamespace AjaxSample ' v, [  E& J" Y/ ~4 f/ Z
{ # M1 X2 }% a2 k) i, `3 U/ w
///
: D- r3 G2 J( B6 l/// Summary description for Methods.   k& f' p( F# t" @! p3 q; D
///
1 H% B! i  N0 J3 K& Hpublic class DemoMethods % r7 p1 i% ~7 k/ x* B2 q4 I
{
+ e( J- s9 f8 [
: K) E" e2 q( E4 O" J[Ajax.AjaxMethod] " }) Y0 }9 c  |
public string GetCustomerMac(string clientIP) //para IP is the client's IP
7 ]8 ?, v7 f# Z9 t6 M4 L{ * z) X) X. [4 y6 n! y* X3 g' `  ]
string mac = ""; 2 n5 \& _& N1 \
System.Diagnostics.Process process = new System.Diagnostics.Process();
9 S# g# v) M/ c( i: r# B+ j7 n3 Uprocess.StartInfo.FileName = "nbtstat";
" L) ~* [" ~( yprocess.StartInfo.Arguments = "-a " clientIP;
8 r% ?+ g6 c8 K" K" tprocess.StartInfo.UseShellExecute = false;
( q' @: n' V% \! E9 X+ Sprocess.StartInfo.CreateNoWindow = true;
8 V8 R9 q' _# a4 E  G7 L  sprocess.StartInfo.RedirectStandardOutput = true; ' K2 D% \" Z  q$ g9 c0 f: _

" U. s4 p2 ^0 E/ T4 f% Yprocess.Start(); + R+ J$ q) }- a2 U7 E# Z5 F3 }% ~! s- }

/ \% c- J) V/ I/ b$ Y- U4 ~string output = process.StandardOutput.ReadToEnd();
5 j  I' s" ^  f- l( P6 p/ xint length = output.IndexOf("MAC Address = ");
4 m5 x: B$ s& `% p! h7 `if(length 0)
1 M3 R3 a$ c. Q7 V" Z9 e: g/ z{ 1 }  q  S, m1 X2 _) r2 x5 J
mac = output.Substring(length 14, 17); ) X3 U1 F" E/ b4 ]; ~5 W: K8 D
} 6 t0 q0 U% @+ ]- V

1 q, C# ], _) X6 W0 }process.WaitForExit(); * j# x/ E+ u( h% N  N/ y0 l

5 J# i" w; x* C- U/ areturn mac.Replace("-", "").Trim(); * D7 t7 w  n6 c: j3 V
}
$ h% j# j; x& |; Q$ @/ {% Z' c} , W/ O. G, v. c: w$ [' t1 T
}
1 }8 [) y; Y0 e
7 e* A0 O0 a  [; a7 \6 @4.写javascript,新建一个名为default,js文件如下:
$ h9 h/ U, h6 Y& ~; ]" H$ [
0 K* ^- y" P4 ~: J1 |* b. ofunction GetMac() ( j$ n! Y, P& ]& d/ e9 y  a" q: w
{ 2 s8 I/ ?, j7 o4 z
var clientIP="192.168.0.1"; 7 A8 C+ `. x8 }
document.getElementById("Mac").value=DemoMethods.GetCustomerMac(clientIP).value
# l: L: ~7 Y+ k8 k- Z6 \alert(DemoMethods.GetCustomerMac(clientIP).value);
* w4 r. ~, K$ l; _6 o} 0 a/ @, C. w* Y
! f  Q% K6 D( B  @% d8 s1 ^
5.在某个Aspx页面放上一个html 的button   : k( W5 H) W4 @6 _! f

; g, E4 ?  ~4 V5 `8 I( R/ S5 p  在页面上 中引用default.js :+ p( G6 `# k8 ?# e1 D3 r' N
: R9 H: [, R, s/ `

+ y& d% ]/ [! ^+ c! a
" o( L' M* E) R  ]: M   
# S# {; d$ b/ Y2 K9 l0 i& l2 [' p4 q; \0 L* e) e6 T% E
  在INPUT的onclick事件中加上   
4 Y& c  b# A+ p4 F7 @% `5 J. Z3 ?3 K: F0 H
value="客户端获取IP"    2 [; @2 ?8 v0 p& C5 @+ _1 N
- ]3 h) s" J$ [3 r
   6.修改Global.asax的Application_Start事件,设置Ajax的HandlerPath :   & j9 u( a' B8 r1 q5 m" z8 y' S

$ S" H5 ~( h# e2 E7 [protected void Application_Start(Object sender, EventArgs e)
, z1 Q& w# ^; C) O& B  _6 N# U% k{ $ a8 U$ p' \* s1 O- m
Ajax.Utility.HandlerPath = "ajax";
. n* N! L: L5 F( L& b}   
4 s. {/ V! E" w1 B* H8 s
! v. P) l  d4 A: _8 F运行看看效果。是不是没有刷新就在服务器端取到客户端的MAC地址??   % m8 L8 M" w/ ~2 N

: K% X( x& g5 f+ \7 i& s: w需要注意的是:该版本的.net Ajax需要手工在中Global.asax加上Ajax.Utility.HandlerPath = "ajax"; 配置文件web.config必须加上HttpHandler的配置信息!   8 N  m8 S" _$ T$ {6 w( w; B" d8 ]
% V: p+ o% {5 L! }3 _+ M5 \
该开发包的新版本还没有来得及体验,估计新版本中会方便一些,可能会去掉手动的设置Global.asax的Application_Start事件中加上Ajax.Utility.HandlerPath = "ajax";以及其他麻烦的设置!期待ing……



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题