ajaxpro安装和使用

1、 Ajax.net 做为Ajax技术在dotNet 框架下的实现,作者Michael Schwarz采取了一种封装效果相当棒的技术:将客户端处理XML、事件调用方式都封装在2个Javascript文件中(AjaxPro.prototype.js 和AjaxPro.core.js),同时将这2个重要文件以资源的形式编译于dll中,在处理客户端请求其自定义的.ashx文件时,返回这两个文件。所以我们在使用Ajax.net时需要在Web.config中添加如下httpHandlers以 AjaxPro.AjaxHandlerFactory来处理.ashx文件:
ajaxpro安装和使用
ajaxpro安装和使用<system.web></system.web>之间插入以下代码
ajaxpro安装和使用
<httpHandlers>
ajaxpro安装和使用
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
ajaxpro安装和使用
</httpHandlers>
ajaxpro安装和使用 
ajaxpro安装和使用2、在此基础上,Ajax.net开始对要求其处理的方法进行封装,以便在客户端通过Javascript来调用。首先在用户必须调用的另一个ashx文件即 converter.ashx中做了方法的封装,当然要支持任意多数量的参数及返回值的处理,然后就是对于服务端的逻辑处理方法所在类的封装处理。
ajaxpro安装和使用如何开始使用Ajax.net
ajaxpro安装和使用A:获取Ajax.net 可以到 http://www.schwarz-interactive.de/ 下载(目前最新版6.4.15.1.)。
ajaxpro安装和使用B:解压zip并在需要使用的项目中添加对dll的引用(其中AjaxPro.dll为dotnet1.1版,AjaxPro.2.dll 为2.0版)
ajaxpro安装和使用C:如同上面所说,在web.config中添加对ashx的处理
ajaxpro安装和使用D:在服务端添加Ajax.net要处理的方法,假如我们要提供的服务是返回用户输入的字符的MD5校验码,那么我们首先要做的是给这个方法加入需要Ajax.net处理使客户端可以直接调用的属性[AjaxPro.AjaxMethod]如下:
ajaxpro安装和使用 
ajaxpro安装和使用[AjaxPro.AjaxMethod]
ajaxpro安装和使用public string Md5Hash(string sSou)
ajaxpro安装和使用{
ajaxpro安装和使用string sResult  ="";
ajaxpro安装和使用 
ajaxpro安装和使用byte[] byBuffer =  System.Text.Encoding.UTF8 .GetBytes(sSou);
ajaxpro安装和使用System.Security.Cryptography.MD5CryptoServiceProvider  md = new System.Security.Cryptography.MD5CryptoServiceProvider();
ajaxpro安装和使用 
ajaxpro安装和使用byte[] result = md.ComputeHash(byBuffer);
ajaxpro安装和使用 
ajaxpro安装和使用for(int i=0; i
< result.GetLength(0); i++)
ajaxpro安装和使用{
ajaxpro安装和使用  sResult +
= result.ToString("X2");
ajaxpro安装和使用
}
ajaxpro安装和使用 
ajaxpro安装和使用return sResult;
ajaxpro安装和使用 
ajaxpro安装和使用}
ajaxpro安装和使用
ajaxpro安装和使用然后在Page_Load中注册此类
ajaxpro安装和使用private void Page_Load(object sender, System.EventArgs e)
ajaxpro安装和使用{
ajaxpro安装和使用       AjaxPro.Utility.RegisterTypeForAjax
ajaxpro安装和使用       (typeof(WebForm1));
ajaxpro安装和使用    }
ajaxpro安装和使用E:在客户端调用方法:
ajaxpro安装和使用<script type
="text/javascript">
ajaxpro安装和使用function getMd5()
ajaxpro安装和使用{
ajaxpro安装和使用  var a = document.getElementById("source").value;
ajaxpro安装和使用    var c = TAjax.WebForm1.Md5Hash(a);
ajaxpro安装和使用    alert(c.value);
ajaxpro安装和使用}
ajaxpro安装和使用
</script>
ajaxpro安装和使用
<input type="text" id="source" name="source" >
ajaxpro安装和使用
<input type="button" name="sub" onclick="getMd5()" value="提交">
ajaxpro安装和使用当然这里Tajax.WebForm1就是实现类的全名了(包括namespace).
ajaxpro安装和使用这样一个简单应用就算完成了,怎么样,是不是简单的很?在这么简单的使用了Ajax.net后你是不是和我一样觉得不满足,好像还有一些工作可以做?对了,接下来我们将继续深度使用并实现无aspx文件的逻辑层和表现层的彻底分离。
ajaxpro安装和使用应用Ajax.net在Asp.net中实现无aspx文件应用,彻底分离逻辑层和表现层
ajaxpro安装和使用Asp.net 中居然没有aspx文件,要如何实现呢?我不知道你想过没有,我反正觉得这是个艰巨的任务;因为aspx文件做为一个桥梁连接了前台和后台,一个 runat=server为我们做了太多的事情,我们自己实现也不是完全不可以,不过费尽周折的意义可能并不大;说到意义——这样做的意义我想不用我说,大家自己想想吧,呵呵。闲话少絮。我们接着进入正题。
ajaxpro安装和使用通过前面的描述,我想大家一定可以猜到关键点。对了,就是那几个js,我们启动程序,查看源文件,奥妙就在这里:
ajaxpro安装和使用
<script type="text/javascript" src="/TAjax/ajaxpro/prototype.ashx"></script>
ajaxpro安装和使用
<script type="text/javascript" src="/TAjax/ajaxpro/core.ashx"></script>
ajaxpro安装和使用
<script type="text/javascript" src="/TAjax/ajaxpro/converter.ashx"></script>
ajaxpro安装和使用
<script type="text/javascript" src="/TAjax/ajaxpro/TAjax.WebForm1,TAjax.ashx"></script>
ajaxpro安装和使用注:TAjax在VB中称为项目名称.在C#上则为名称空间名.WebForm1为类名
ajaxpro安装和使用前面3个文件我就不在多说,前面已经说过,我们只看最后一个,那不正是Ajax.net对我们服务端类的封装吗?
ajaxpro安装和使用addNamespace("TAjax");
ajaxpro安装和使用TAjax.WebForm1_class = Class.create();
ajaxpro安装和使用Object.extend(TAjax.WebForm1_class.prototype, Object.extend(new AjaxPro.AjaxClass(), {
ajaxpro安装和使用       Md5Hash: function(sSou) {
ajaxpro安装和使用              return this.invoke("Md5Hash", {"sSou":sSou}, this.Md5Hash.getArguments().slice(1));
ajaxpro安装和使用       },
ajaxpro安装和使用       initialize: function() {
ajaxpro安装和使用              this.url = ''/TAjax/ajaxpro/TAjax.WebForm1,TAjax.ashx'';
ajaxpro安装和使用       }
ajaxpro安装和使用}));
ajaxpro安装和使用TAjax.WebForm1 = new TAjax.WebForm1_class();
ajaxpro安装和使用 
ajaxpro安装和使用既然原理明白了,分离就简单了,参照上一部份,我们的步骤从D开始改变
ajaxpro安装和使用D:新建一个类Admin,将WebForm1.aspx.cs中的代码拿过来。
ajaxpro安装和使用注:在VB.NET中拷过来时只需拷贝Md5Hash那段函数即可.不必再构造函数中注册此类.C#中我没试过
ajaxpro安装和使用    
<AjaxPro.AjaxMethod()> _
ajaxpro安装和使用    Public Function Md5Hash(ByVal sSou As String) As String
ajaxpro安装和使用        Dim sResult As String = ""
ajaxpro安装和使用        Dim byBuffer As Byte() = System.Text.Encoding.UTF8.GetBytes(sSou)
ajaxpro安装和使用        Dim md As System.Security.Cryptography.MD5CryptoServiceProvider = New System.Security.Cryptography.MD5CryptoServiceProvider
ajaxpro安装和使用        Dim result As Byte() = md.ComputeHash(byBuffer)
ajaxpro安装和使用        Dim i As Integer
ajaxpro安装和使用        For i = 0 To result.GetLength(0) - 1
ajaxpro安装和使用            sResult += result(i).ToString("X2")
ajaxpro安装和使用        Next
ajaxpro安装和使用        Return sResult
ajaxpro安装和使用    End Function
ajaxpro安装和使用E:在客户端调用方法:
ajaxpro安装和使用新建一个htm文件include.htm,将前述四行调用放在这里
ajaxpro安装和使用 
ajaxpro安装和使用新建一个htm文件test.htm,内容当然就是前面的客户端表示层。重要的一点就是要添加一个iframe如下:
ajaxpro安装和使用
<iframe name="include" marginwidth=0 marginheight=0  src="include.htm" frameborder=0></iframe>
ajaxpro安装和使用同样,修改调用为
ajaxpro安装和使用ajaxpro安装和使用
<script type="text/javascript">...
ajaxpro安装和使用
function getMd5()
ajaxpro安装和使用ajaxpro安装和使用
...{
ajaxpro安装和使用    
var a  = document.getElementById("source").value;
ajaxpro安装和使用    
var c = include.TAjax.Admin.Md5Hash(a);
ajaxpro安装和使用    alert(c.value);
ajaxpro安装和使用}

ajaxpro安装和使用
</script>
ajaxpro安装和使用扩展:如果多处调用而且调用方法较长,你当然可以再对应每个业务类做个js文件,将其中的调用放在一起。
 
上一篇:不用AJAX实现前台JS调用后台C#方法(小技巧)


下一篇:innerHTMl和确认提示的使用