使用AjaxPro.AjaxProperty的小发现

    因工作需要,不得不暂时放下Asp.net AJAX,先研究AjaxPro。

   下午看了些关于AjaxPro的文章,尤其仔细看了这篇文章后,感觉理论基础已经有点了,接下来就开始动手实践。

      开始做了个简单的例子,引入dll,修改配置文件,引入命名空间,注册AjaxPro,注册AjaxPro.AjaxMethod(),写JS代码,然后运行,一气呵成,ok。

1 在web.config中的<system.web>节点中添加:

None.gif      < httpHandlers >
None.gif      
< add verb = " POST,GET "  path = " ajaxpro/*.ashx "  type = " AjaxPro.AjaxHandlerFactory, AjaxPro " />
None.gif    
</ httpHandlers >

2 后台代码(本来想直接写在页面上,后来想,还是保持住良好的习惯吧,我忍了)
None.gif          private   void  Page_Load( object  sender, System.EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            AjaxPro.Utility.RegisterTypeForAjax(
typeof(WebForm1));
ExpandedBlockEnd.gif        }

None.gif
None.gif        [AjaxPro.AjaxMethod()]
None.gif        
public   string  TestMehtod( string  name)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
return this.BuildMessage(name);
ExpandedBlockEnd.gif        }

None.gif
None.gif        
protected   string  BuildMessage( string  name)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
return string.Format("Hello {0}!Welcome to AjaxPro's world.",name);
ExpandedBlockEnd.gif        }

3 前台代码
None.gif <% @ Page language = " c# "  Codebehind = " SampleBase.aspx.cs "  AutoEventWireup = " false "  Inherits = " AjaxProSample.WebForm1 "   %>
None.gif
<! DOCTYPE HTML PUBLIC  " -//W3C//DTD HTML 4.0 Transitional//EN "   >  
None.gif
None.gif
< html >
None.gif  
< head >
None.gif    
< title > WebForm1 </ title >
None.gif    
< meta name = " GENERATOR "  Content = " Microsoft Visual Studio .NET 7.1 " >
None.gif    
< meta name = " CODE_LANGUAGE "  Content = " C# " >
None.gif    
< meta name = vs_defaultClientScript content = " JavaScript " >
None.gif    
< meta name = vs_targetSchema content = " http://schemas.microsoft.com/intellisense/ie5 " >
None.gif    
< script language  =   " javascript "  type  =   " text/javascript " >
None.gif        
None.gif        function TestFunction()
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            var serverMessage 
= AjaxProSample.WebForm1.TestMehtod('jxh');
InBlock.gif            
return serverMessage.value;
ExpandedBlockEnd.gif        }

None.gif        
None.gif    
</ script >
None.gif  
</ head >
None.gif  
< body >
None.gif    
< form id = " Form1 "  method = " post "  runat = " server " ></ form >
None.gif    
None.gif    
< script language  =   " javascript " >
None.gif        document.write(TestFunction());        
None.gif    
</ script >
None.gif    
None.gif  
</ body >
None.gif
</ html >

基本功能实现,下一步当然是更进一步的实践了。接着做的例子是个简单的登录操作,并将用户名和密码用Session记录下来。代码和上面的类似,就不贴了,占地方,呵呵。
但有2点需要注意
1 关于Session,如果想在AjaxMethod中使用Session的话,那么AjaxMethod标签必须带AjaxPro.HttpSessionStateRequirement.ReadWrite参数
None.gif [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
None.gif        
public   string  CheckPassword()
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {dot.gifdot.gif}

 2 关于属性,我们注册了一个属性,运行之后,在客户端JS中的确就可以访问了

None.gif         [AjaxPro.AjaxProperty()]
None.gif        
public   string  UserName
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
set
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                Session[
"UserName"= value;
ExpandedSubBlockEnd.gif            }

InBlock.gif
InBlock.gif            
get
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
return Session["UserName"].ToString();
ExpandedSubBlockEnd.gif            }

ExpandedBlockEnd.gif        }

None.gif AjaxProSample.SampleSession.UserName  =  document.getElementById( " txtUserName " ).value;
None.gif
None.gifalert(AjaxProSample.SampleSession.UserName);

但此时如果在服务器端代码中企图使用的话,就会出现空引用异常,如果非要在客户段和服务器端同时使用这个属性的话,请增加一个设置值的方法。例如:

None.gif         [AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
None.gif        
public   void  SetValue( string  value)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            UserName 
= value;
ExpandedBlockEnd.gif        }

None.gif             AjaxProSample.SampleSession.UserName  =  document.getElementById( " TextBox1 " ).value;
None.gif            AjaxProSample.SampleSession.SetValue(AjaxProSample.SampleSession.UserName);

这样就能在js和cs中同时使用UserName这个属性了,当然修改也要提供2套方案。 原因请看推荐的那篇文章,我就不啰嗦了。

转载于:https://www.cnblogs.com/jxhwei/archive/2007/02/13/649582.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值