zoukankan      html  css  js  c++  java
  • 在webapi中为Action使用dynamic参数实现Post方式调用

    1.在webapi中使用controller/action/id的路径配置,打开文件[App_Start] -[WebApiConfig]

      config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{action}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );
    

     

    2.直接使用[HttpPost]过滤器,为action添加实现方法:

    [HttpPost]
    // POST api/<controller>
    public string AdminLogin(string userName,string passWord)
    {
      return "";
    }
    

      产生的问题:前端将“type”改为“Post”方式,无论如何都获取不到该方法。

    3.解决方案一:

     ①添加中转的对象类,用于存储参数。

        public class AdminLogin
        {
            public string UserName { get; set; }
    
            public string PassWord { get; set; }
        }
    

    ②修改action参数配置。

          [HttpPost]
            // POST api/<controller>
            public string AdminLogin([FromBody]AdminLogin adminLogin)
            {
               return adminLogin.UserName;
            }    
    

    ③前端调用方法:

          $.ajax({
    
                type: "POST", url: AdminApi.AdminLogin,
           data: {UserName:"xxx",PassWord:"XXX"},
           success: function (data) {
               //处理方法
    
                }
            });
    

      

      

    4.解决方案二:

    ①修改action参数为dynamic及方法调用:

          [HttpPost]
            // POST api/<controller>
            public string AdminLogin([FromBody]dynamic adminLogin)
            {
                string userName = adminLogin.UserName;
                string passWord = adminLogin.PassWord;
                return  userName;
            }
    

    ②修改前端调用方式:

            var obj = { UserName: username, PassWord: password };
    
            //调用api验证方法
            $.ajax({
    
                type: "POST", url: AdminApi.AdminLogin,
           data: JSON.stringify(obj), contentType: "application/json", 
           success: function (data) {
                 //内部实现方法
    
                }
            });
    

      

      

     

  • 相关阅读:
    基于.Net Core的Redis:实现查询附近的地理信息
    基于.Net Core的Redis:基本数据类型及其应用场景与命令行操作
    C# WebClient几种常用方法的用法
    const学习(续)
    C++ const学习
    Unicode
    android studio下使用HAXM android模拟器(x86)加速器
    使用efinance包获取股票数据
    Linux初识
    UWSGI
  • 原文地址:https://www.cnblogs.com/pressforward/p/7764946.html
Copyright © 2011-2022 走看看