zoukankan      html  css  js  c++  java
  • ashx+jQuery,一个轻量级的asp.net ajax解决方案

    除庞大asp.net ajax之外的ajax解决方案。我们想法是以不同的服务器端方式输出,然后在页面使用jQuery的ajax实现调用服务器端几个解决方案:

    • 使用一般的webform,在页面用jQuery ajax调用,再从取得的html数据中取得<body>内的内容,写入DOM
      • 优点:不用改变现有的asp.net开发模式,可以使用现成的页面;ajax取得的内容是html文本,直接写入DOM即可
      • 缺点:内容浪费,<body>之外的内容都不是必要的,而且如果使用了MasterPage那就。。。
    • 使用一般的webform,但是用Response.Write()控制输出html,在页面用jQuery ajax调用,将获取的内容写入DOM
      • 优点:内容干净,不浪费;ajax取得的内容是html文本,可以直接写入DOM
      • 缺点:需要在服务器端以字符串形式构造html文本,编程不方便,不容易调试和维护
    • 使用一般的webform,用Response.Write()控制输出json数据,在页面用jQuery ajax调用,将json数据在客户端加工成html后写入DOM
      • 优点:仅仅交换json数据,极干净,符合高效的web设计理念
      • 缺点:需要在客户端加工json数据,并且对DOM造成入侵
    • 使用asmx,封装成web service,用jQuery ajax调用asmx的内容,将json或者xml数据在客户端加工成html后写入DOM
      • 优点:仅仅交换json或/xml数据,非常干净;web service易于跨平台
      • 缺点:需要在客户端加工json数据,并且对DOM造成入侵
    • 使用自定义控件ascx,然后使用专门的webform页面做wrapper(包装)在页面用jQuery ajax调用wrapper webform,将html数据写入DOM
      • 优点:webform仅仅用作wrapper,根据不同的请求参数可以在wrapper中动态使用自定义控件;自定义控件输出的是html文本,可以直接写入DOM;编程方便,有VS2008代码感知支持,易于调试和维护
      • 缺点:跟传统的webform编程理念不一样,弱化了webform的作用

    以上就是讨论的几种可行的方案——不管是asp.net webform方式还是asp.net MVC方式,都是可行的。

    昨天晚上又发现一种方案:使用ashx+jQuery .ashx是一个专门的用于处理HttpHandler的文件类型,用来处理自定义Http请求,可以在web.config定义运行时针对ashx的Http请求处理方式。

    <add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory" validate="false" />

    这样我们就可以用SimpleHandlerFactory来处理ashx的http请求了。在ashx的类中实现IRequiresSessionState接口,using下System.Web.SessionState就可以使用Session了,很方便

    using System.Web.SessionState; public class checkCookie : IHttpHandler ,IRequiresSessionState { ... // todo somthing }

    实例:使用ashx+jQuery实现Email存在的验证

    .ashx文件

    <%@ WebHandler Language="C#" Class="CheckUser" %>   using System; using System.Web;     public class CheckUser : IHttpHandler {   public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain"; context.Response.Write(UserRule.GetInstance().IsUserExist(context.Request["Email"])); }   public bool IsReusable { get { return false; } } }

    html:

     <input type="text" id="email" /> <input type="button" value="test" onclick="check_email()" />

    js:

    function check_email() { var email = $("#email").attr("value"); $.get("../ajax/checkuser.ashx", { Email: email }, function(data) { window.alert(data); }); }

    simple的,显然效率会比较高。不过simple的就只能够做点simple的事情。如果要输出html,还是不太方便。如果要输出html的话,我还是比较倾向于用ascx处理内容,webform做包装所以ashx+jQuery应该算是是一个asp.net里轻量级的解决方案

  • 相关阅读:
    51nod 1087 1 10 100 1000(找规律+递推+stl)
    51nod 1082 与7无关的数 (打表预处理)
    51 nod 1080 两个数的平方和
    1015 水仙花数(水题)
    51 nod 1003 阶乘后面0的数量
    51nod 1002 数塔取数问题
    51 nod 1001 数组中和等于K的数对
    51 nod 1081 子段求和
    51nod 1134 最长递增子序列 (O(nlogn)算法)
    51nod 1174 区间中最大的数(RMQ)
  • 原文地址:https://www.cnblogs.com/hjtdlx/p/2286022.html
Copyright © 2011-2022 走看看