asp.net 使用JQuery 调用Ashx 后面直接写方法名,通过反射找到对应的方法

using System.Reflection;
public class Industry_Manager : IHttpHandler
{
    HttpRequest gRequest = null;
    HttpContext gContext = null;
    HttpResponse gResponse = null;
    string func = string.Empty;
    string result = string.Empty;
    string pageUrl = string.Empty;

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        gContext = context;
        gRequest = context.Request;
        gResponse = context.Response;
        func = gRequest["func"];
        MethodInfo method = typeof(Industry_Manager).GetMethod(func);
        if (method != null)
        {
            object[] args = new object[] { result };
            method.Invoke(this, args);
            result = (string)args[0];
        }
        gResponse.Write(result);
    }

js 代码

url: "http://www.cnblogs.com/Ashx/Industry_Manager.ashx?func=GetIndustryList", //请求数据的页面,后面参数直接跟方法名就可以了,后台通过反射自动查找,并返回数据

 public void GetIndustryList(out string result)
    {
        int count = 0;
        string sort = string.IsNullOrEmpty(gRequest["sort"]) ? "rectime_11022" : gRequest["sort"];
        string order = string.IsNullOrEmpty(gRequest["order"]) ? "desc" : gRequest["order"];
        string sector = gRequest["sector"];
        string name = gRequest["name"];
        string sWhere = "";

        if (!string.IsNullOrEmpty(sector) && sector != "请选择")
        {
            sWhere += " and  f002v_10202=‘" + sector + "‘";
        }

        if (!string.IsNullOrEmpty(name))
        {
            sWhere += " and  f004v_10202 like ‘" + name + "%‘";
        }
        sWhere = sWhere.TrimStart(" and".ToCharArray());
        BLL.vm_dms_allIndustry bll = new BLL.vm_dms_allIndustry();
        List<Model.vm_dms_allIndustry> list = bll.GetListRowNumber("vm_dms_allIndustry", "", sWhere, GetPageIndex(), sort, order, GetPageSize(), "*", "f001g_10202", ref count);
        string strResult = Newtonsoft.Json.JsonConvert.SerializeObject(list);
        strResult = JsonHelper.JsonReplaceDate1(strResult);
        strResult = "{ \"total\":" + count + ",\"rows\":" + strResult + "}";
        result = strResult;
    }

这样就可以避免写一堆 的switch  case 了

类似于这种代码的可以不用写了

public class News_Manager : IHttpHandler
{

    HttpRequest gRequest = null;
    HttpContext gContext = null;
    HttpResponse gResponse = null;
    string func = string.Empty;
    string result = string.Empty;
    string pageUrl = string.Empty;

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        gContext = context;
        gRequest = context.Request;
        gResponse = context.Response;
        pageUrl = gRequest.UrlReferrer.AbsolutePath;
        func = gRequest["func"];
        if (!string.IsNullOrEmpty(func))
        {
            switch (func)
            {
                case "Get_News_General_List":
                    Get_News_General_List(out result);
                    break;
                case "News_General_Stock_Edit":
                    News_General_Stock_Edit(out result);
                    break;
                case "Get_News_General_ById":
                    Get_News_General_ById(out result);
                    break;
                case "News_General_Stock_Delete":
                    News_General_Stock_Delete(out result);
                    break;
                case "Get_News_General_ByGuid":
                    Get_News_General_ByGuid(out result);
                    break;
                case "News_General_Indus_Edit":
                    News_General_Indus_Edit(out result);
                    break;
                case "News_General_Industry_Delete":
                    News_General_Industry_Delete(out result);
                    break;
                case "Save":
                    Save(out result);
                    break;
                case "GetNewsById":
                    GetNewsById(out result);
                    break;
                case "Get_News_General_Industry_ById":
                    Get_News_General_Industry_ById(out result);
                    break;
                case "CreateGuid":
                    CreateGuid(out result);
                    break;
                case "GetStockByIndustry":
                    GetStockByIndustry(out result);
                    break;
                case "GetPLByNewsIDAndType":
                    GetPLByNewsIDAndType(out result);
                    break;
                default:
                    break;
            }
        }
        gResponse.Write(result);
时间: 2024-10-07 10:21:41

asp.net 使用JQuery 调用Ashx 后面直接写方法名,通过反射找到对应的方法的相关文章

根据类名,方法名,反射调用类的方法

/** * 根据类名,方法名,反射调用类的方法 * @方法名称: getResult * @描述: TODO * @param className * @param methodName * @param params * @return */ public static String getResult(String className,String methodName,Map<String,Object> params){ String result = null; try{ Objec

asp.net中js和jquery调用ashx的不同方法分享

代码如下: var xhr = new XMLHttpRequest();            xhr.open("get", 'Controls/gengCart.ashx?CartID=' + input + '&count=' + inp, true);            xhr.setRequestHeader("If-Modified-Since", "0");            xhr.onreadystatecha

Jquery调用从ashx文件返回的jsonp格式的数据处理实例

开发环境:vs2010+jquery-1.4.min.js 解决问题:网上代码比较少,好多调试不通,返回数据不用json而用jsonp主要考虑解决跨域问题 开发步骤:打开VS2010,新建一web站点,保存位置选择D:\Website1;添加新项,选择一般处理程序,命名cmdHandler.ashx;添加新项,选择HTML页,命名为testAshx.htm;网上下载jquery-1.4.min.js拷贝到web站点中 项目相关网站源码和运行截图如下: 1.testAshx.htm代码如下: <!

Asp.net中JQuery、ajax调用后台方法总结

通过上一篇文章实例的实现,整个过程当中学习到很多知识点,了解了Jquery.Ajax在asp.net中的运用,加以总结,其实原理都是一样的,理解了一种,其他的注意很少的区别就可以了.灵活运用: 1.有参数的方法调用 示例代码如下:前台jQuery代码:$(function() {  知道的一种就是ajax调后台的方法. 1.有参数的方法调用 示例代码如下: 前台jQuery代码: [plain] view plaincopyprint? <span style="font-size:18p

jQuery调用ASP.NET的WebService

经常需要使用客户端脚本调用net的WebService,比较常用的是在ScriptManager脚本管理器的环境下使用回调调用WebService的方法,可是这些必须在aspx的页面中进行,难免有些限制. jQuery库是我们比较常用的JavaScript库,入门简单,功能强大,对Ajax的支持比较友好.使用jQuery调用net的WebService也是经常遇到的.现将常见调用类型总结如下: 1.环境 jQuery 1.3.2 .net framework 2.0 Asp.net ajax 1

Jquery 调用.net WebService 返回Json、XML方法

由于项目需要,使用前端.手机客户端调用ASP.NET的Webservice来获取信息.所以这段时间重温一下Jquery与Web Serivce,过程中碰到不少问题,也有不少的收获. Service代码 [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod] public string myMethod(string para) { return "Hi," + para

[转]jQuery调用ASPX返回json

本文转自:http://www.cnblogs.com/fire-phoenix/archive/2009/11/13/1614146.html 本文介绍如何在ASP.NET(ASP.NET/AJAX)里使用基于JQuery的AJAX技术.(源代码下载见最后) 在使用JQuery前,请到www.jquery.com下载最新版本的js代码,然后再代码里使用 <script src="_scripts/jQuery-1.3.2.js" type="text/javascri

jquery访问ashx文件示例

转自原文jquery访问ashx文件示例 .ashx 文件用于写web handler的..ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程.其实就是带HTML和C#的混合文件. .ashx文件适合产生供浏览器处理的.不需要回发处理的数据格式,例如用于生成动态图片.动态文本等内容.很多需要用到此种处理方式.此文档提供一个简单的调用ashx文件的Demo,并贴出关键文件的源码. 以下为Demo中Login.ashx文

Asp.net中ajax调用后台方法

这个当然不用说大家都知道的一种就是ajax调后台的方法.1.有参数的方法调用示例代码如下:前台jQuery代码:$(function() {  这个当然不用说大家都知道的一种就是ajax调后台的方法. 1.有参数的方法调用 示例代码如下: 前台jQuery代码: $(function() {   var browers = browersEstimate();   var params = '{browersType:"' + browers + '"}';   $.ajax({