博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《AjaxPro 教程系列》 一、环境配置和经典用例AutoComplete功能的实现
阅读量:6860 次
发布时间:2019-06-26

本文共 2976 字,大约阅读时间需要 9 分钟。

      AjaxPro控件对于我来说,是我用起来比较顺手的Ajax框架,优势在于与.NET 互操作非常方便,能够在客户端非常完美的调用服务器端的方法,支持全数据类型,并能直接返回类,结构,枚举,数据集等,可以在服务器端直接操作,I love it!

  下面说一下环境的简单配置:

    1. 下载 AjaxPro.2.dll,并在项目中添加引用。
    2. 修改配置文件,添加以下信息<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/> 如下图所示:

[...]

    3. 定义与前台进行异步交互的方法,并加上AjaxPro.AjaxMethod标记。

    4. 为了能自客户端的javascript中调用服务器方法,需要在Page_Load事件中注册页面类,其中RegisterTypeForAjax()f方法参数为当前页面类的类型,如下所示。

protected void Page_Load(object sender, EventArgs e)    {      AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));    }

    5. 在前台调用服务器端方法,若为网站项目,则直接“当前页面类.Ajax标记方法(参数)”即可,若为web应用程序,还需要加上相应的命名空间,即“命名空间.当前页面类.Ajax标记方法(参数)”, 否则会报“XXX未定义”错误。  

  好,现在进入实战:
    需求:在页面的存在两个input text标签,要求输入起始站和终到站的拼音简写,能自动提示和筛选。
    1. 数据准备:下载全国铁路站点数据,放到网站resources文件夹下。文件内容格式:@bjb|北京北|北京东|BOP|beijingdong|bjd|1..........
      写方法解析文件加载数据到内存中,如下所示:
      

private static List
BindStates() { List
stationList = new List
(); var dataText = File.ReadAllText(HttpContext.Current.Server.MapPath("~") + "\\sources\\StationNames.txt",System.Text.Encoding.Default); var statesCol = dataText.Split('@'); for (int i = 1; i < statesCol.Length; i++) { var temp = statesCol[i].Split('|'); stationList.Add(new States() { SimSpell = temp[0], Name = temp[1], Index = int.Parse(temp[5]) }); } return stationList; }

附带State类:

class States{    ///     /// 拼音简写    ///     public string SimSpell { get; set; }     ///     /// 站点名称    ///     public string Name{get;set;}    ///     /// 序号    ///     public int Index { get; set; }}

 

     2. 方便展示起见,写静态只读字段来存储站点数据:

private readonly static List
states = BindStates();

    3. 写ajax交互方法来得到匹配的站点名称并回传到客户端,加AjaxPro.AjaxMethod标记:

  [AjaxPro.AjaxMethod]    public string[] GetResult(string input) {var arrResult = from data in states                        where string.IsNullOrEmpty(input)                         ? data.Index < 10                        : data.SimSpell.Contains(input)                        orderby data.Index                        select data.Name;        return arrResult.ToArray();    }

    4. 注册页面类,在Page_Load事件中:

protected void Page_Load(object sender, EventArgs e)    {        AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));    }

    5. 转到前台,页面上添加input text标签以供输入, 为简单起见,不再动态在指定位置生成ul,前台展示代码如下:

    
起始站:

        6. 注册input-text的OnKeyup事件,用来处理用户的输入,此时用来与服务器进行异步的交互:

        在前台调用服务器端的方法,若为网站项目,则直接“当前页面类.Ajax标记方法(参数)”即可,若为web应用程序,还需要加上相应的命名空间,即“命名空间.当前页面类.Ajax标记方法(参数)”, 否则会报“XXX未定义”错误。

        获得返回值,在方法后加value即可,并且从上个方法看,AjaxPro在javascript和服务器端数组交互操作比较方便。

        7. 效果如下:

        

    实例代码:

    转载请注明出处:

    转载于:https://www.cnblogs.com/gis-crazy/archive/2013/03/19/2968392.html

    你可能感兴趣的文章
    HDU 5781 ATM Mechine
    查看>>
    使用Nginx搭建Tomcat9集群,Redis实现Session共享
    查看>>
    Extjs4.1 序列化和反序列化
    查看>>
    git 最常用命令
    查看>>
    iOS self 和 super 学习
    查看>>
    利用deadline_timer实现定时器Timer
    查看>>
    分布式日志收集系统:Facebook Scribe
    查看>>
    数据挖掘的方法有哪些?-转
    查看>>
    js的闭包的一个示例说明
    查看>>
    ARCGIS10如何修改图例的大小
    查看>>
    bin/sh failed with exit code 1
    查看>>
    Novell推出针对SAP所有应用而优化Linux平台
    查看>>
    《梦幻西游》打响反盗号战役:为2亿玩家提供360安全武器
    查看>>
    Silverlight面向客户端,HTML5面向Web
    查看>>
    微软拟向互联网开发商提供免费IIS 服务器
    查看>>
    seajs和requirejs对比;node初识
    查看>>
    JS函数
    查看>>
    (转)linux下vi命令修改文件及保存的使用方法
    查看>>
    循环中else的用法
    查看>>
    Reverse String
    查看>>