zoukankan      html  css  js  c++  java
  • C#中[WebMethod]的用法,aspx、ashx、asmx

    在.net 3.5的情况下

    前台JQuery做Ajax的时候,服务器端

    (1)可以调用aspx.cs 中声明带有[WebMehtod]的public static 的方法(不需要自己手动添加web.config的配置)

    (2)可以调用 *.asmx (web服务) 里面加了[webmethod]的方法(不能写静态,写静态就调用不到了)需要在asmx里面 去掉 [System.Web.Script.Services.ScriptService] 的注释 

    (3)可以调用 *.ashx (一般处理程序),它和aspx一样都实现了IHttpHandler接口。

    方法调用也分不同返回情况:

    • 无参数的方法调用    public static string SayHello(){}   
    • 带参数的方法调用     public static string GetStr(string str, string str2)
    • 返回数组方法的调用   public static List<string> GetArray()

    例如:

    (1)aspx.cs 静态方法[WebMethod]

    [WebMethod]   
    public static string SayHello()   
    {   
         return "Hello Ajax!";   
    }
    复制代码
    $(function() {   
        $("#btnOK").click(function() {   
            $.ajax({   
                //要用post方式   
                type: "Post",   
                //方法所在页面和方法名   
                url: "data.aspx/SayHello",   
                contentType: "application/json; charset=utf-8",   
                dataType: "json",   
                success: function(data) {   
                    //返回的数据用data.d获取内容   
                    alert(data.d);   
                },   
                error: function(err) {   
                    alert(err);   
                }   
            });   
     
            //禁用按钮的提交   
            return false;   
        });   
    });
    复制代码

    (2)WebService1.asmx

    复制代码
      /// 返回泛型列表 
        [WebMethod]
        public List<int> CreateArray(int i)
        {
           List<int> list = new List<int>(); 
           while (i >= 0)
           {
               list.Add(i--);
           } 
           return list;
        }
    复制代码
    复制代码
    //返回泛型列表
        $("#btnArray").click(function(){
           $.ajax({
             type: "POST",
             contentType:"application/json",
             url:"WebService1.asmx/CreateArray",
             data:"{i:10}",
             dataType:'json',
             success:function(result){                    
                 alert(result.d.join(" | "));
               }
            });
        });
    复制代码
    (3)handler处理程序
    复制代码
    $("#dbtn").click(function() {  
      $.ajax({ 
         type: "POST",  
         dataType:"Text", 
         url: "AjaxHandler.ashx", 
         data: { name: "admin", pass: "admin" },  
         beforeSend: function() { $("#ds").html("loading"); },  
         success: function(msg) { $("#ds").html("<p>" + msg + "</p>"); }  
        }); 
    });  
    复制代码

     参考:http://blog.csdn.net/lovegonghui/article/details/49072363

    WebMethod属性不难看出这实际上还是应用了webservice组件的方式来实现的。当然ajax实现异步请求的资源可以使aspx、ashx、webservice等

    复制代码
    //标准的写法:
    $.ajax({
         type: "post",
         dataType: "json",
         contentType: "application/json", //注意:WebMethod()必须加这项,否则客户端数据不会传到
    服务端
         data:{如上所述},//注意:data参数可以是string个int类型
         url: "List.aspx/DeleteNews",//模拟web服务,提交到方法
         // 可选的 async:false,阻塞的异步就是同步
         beforeSend:function(){
              // do something.
              // 一般是禁用按钮等防止用户重复提交
              $("#btnClick").attr({disabled:"disabled"});
              // 或者是显示loading图片
         },
         success: function (data) {
              alert("success: " + data.d);//注意这里:必须通过data.d才能获取到服务器返回的值
              // 服务端可以直接返回Model,也可以返回序列化之后的字符串,如果需要反序列化:string json = JSON.parse(data.d);
              // 有时候需要嵌套调用ajax请求,也是可以的
         },
         complete: function(){
              //do something.
              $("#btnClick").removeAttr("disabled");
              // 隐藏loading图片
         },
         error: function (data) {
              alert("error: " + data.d);
         }
    });
    复制代码

    而mvc中的ajax异步请求

    由于mvc采用基于路由映射,所以Controller中的Action可以直接通过url请求。

  • 相关阅读:
    pat00-自测5. Shuffling Machine (20)
    Spiral Matrix
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Best Time to Buy and Sell Stock II
    4Sum
    3Sum Closest
    3Sum
    MySQL存储过程、函数和游标
    Word Ladder
  • 原文地址:https://www.cnblogs.com/asdyzh/p/9749165.html
Copyright © 2011-2022 走看看