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

    ashx+jQuery,一个轻量级的asp.net ajax解决方案 收藏
    跟shotdog老师研究探讨了下asp.net里,除官方庞大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里轻量级的解决方案

    发表于 @ 2009年01月04日 00:17:00


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/allentranks/archive/2009/01/04/3697443.aspx

  • 相关阅读:
    Android Gradle Plugin指南(五)——Build Variants(构建变种版本号)
    文件内容操作篇clearerr fclose fdopen feof fflush fgetc fgets fileno fopen fputc fputs fread freopen fseek ftell fwrite getc getchar gets
    文件操作篇 close creat dup dup2 fcntl flock fsync lseek mkstemp open read sync write
    嵌入式linux应用程序调试方法
    version control system:git/hg/subversion/cvs/clearcase/vss。software configruation management。代码集成CI:Cruisecontrol/hudson/buildbot
    最值得你所关注的10个C语言开源项目
    如何记录linux终端下的操作日志
    CentOS 5.5 虚拟机安装 VirtualBox 客户端增强功能
    sizeof, strlen区别
    C/C++嵌入式开发面试题
  • 原文地址:https://www.cnblogs.com/netwenchao/p/1662551.html
Copyright © 2011-2022 走看看