zoukankan      html  css  js  c++  java
  • Ajax.NET 初步应用

    首先我们新建个项目,名字是AjaxPro,我用的是vs2005beta2版本。

    右击站点名字点add reference添加对我们刚刚下载来的那个叫AjaxPro.2.dll的引用,如果你用的是vs2003,则添加对AjaxPro.dll的引用,然后我们在添加个web.config文件(很郁闷的是vs2005不再自动添加web.config文件拉),修改web.config如下:

    <system.web> <httpHandlers> <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/> </httpHandlers> 

    意思是所有的ajaxpro/*.ashx请求都由Ajax.PageHandlerFactory处理,而不是由默认的System.Web.UI.PageHandlerFactory处理程序工厂来处理。

    我们现在给Default.aspx.cs文件添加个名字空间namespace MyDemo,这里更加郁闷的是为什么vs2005beta2怎么不给你自动添加名字空间啊?和2003怎么完全不同呢?

    现在我们写个AjaxMethod服务器端方法,他和普通的服务器方法唯一不同的地方就是他必须要在方法的上面添加个[AjaxPro.AjaxMethod],代码如下:

    [AjaxPro.AjaxMethod]
    public DateTime GetServerTime()
    {return DateTime.Now;}
    [AjaxPro.AjaxMethod]
    public int AddTwo(int firstInt, int secondInt)
    {return firstInt + secondInt;}
    我们还必须在Page_Load里面把这个类注册下,如下:
    protected void Page_Load(object sender, EventArgs e)
    { AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default)); }
     

    这个时候我们还必须修改aspx页面的<%@Page指令行,因为我们在后台搞了个名字空间,如下:Inherits="MyDemo._Default"也就是要把名字空间也写上。我们再写客户端脚本来调用服务器方法。代码里有详细的注释,前台Default.aspx代码:

    <%@ Page Language="C#" AutoEventWireup="true"CodeFile="Default.aspx.cs" Inherits="MyDemo._Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"><title>Untitled Page</title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <input id="Button1" type="button" value="获得服务器时间" onclick="getServerTime();" />
    <input id="Text1" type="text" />
    <input id="Text2" type="text" />
    <input id="Button2" type="button" value="得到两个文本框的和" onclick="add(document.getElementById('Text1').value,document.getElementById('Text2').value)" />
    </div>
    </form>
    <script type="text/javascript">
    function getServerTime()
    {//MyDemo._Default.GetServerTime()得到从服务器传来的数据是object,要写.value
    alert(MyDemo._Default.GetServerTime().value);
    }
    function add(a,b)
    {//把文本框的值转换成int
    var a1 = parseInt(a);
    var b1 = parseInt(b);
    //第1、2参数为服务器方法所需要的参数,后面一个是如果服务器返回数据//客户端要处理这些数据的js函数名,他有个参数就是从服务器传来的数据
    MyDemo._Default.AddTwo(a1,b1,getAdd);
    }
    function getAdd(rel)
    {//要加上.value
    alert(rel.value);
    }
    </script>
    </body>
    </html>
    后台Default.aspx.cs代码:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    namespace MyDemo
    {
    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
    }
    [AjaxPro.AjaxMethod]
    public DateTime GetServerTime()
    {return DateTime.Now;}
    [AjaxPro.AjaxMethod]
    public int AddTwo(int firstInt, int secondInt)
    {return firstInt + secondInt;}
    }
    }
    按F5运行结果如下,firefox里面测试通过:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    namespace MyDemo
    {
    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
    }
    [AjaxPro.AjaxMethod]
    public DateTime GetServerTime()
    {return DateTime.Now;}
    [AjaxPro.AjaxMethod]
    public int AddTwo(int firstInt, int secondInt)
    {return firstInt + secondInt;}}}


     

  • 相关阅读:
    思考的乐趣
    编程的知识体系
    Android用Intent来启动Service报“java.lang.IllegalArgumentException: Service Intent must be explicit”错误的解决方法
    手拼SQL小技巧,WHERE 1=1
    n+1 < n , are you sure?
    java swing 去掉按钮文字周围的焦点框
    MyBatis使用动态SQL标签的小陷阱
    String、StringBuffer、StringBuilder的一些小经验……
    SQL Server 2012安装后找不到服务器名称的解决办法!!!
    CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳)
  • 原文地址:https://www.cnblogs.com/frogbag/p/407799.html
Copyright © 2011-2022 走看看