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) {
                 //内部实现方法
    
                }
            });
    

      

      

     

  • 相关阅读:
    iframe子页面获取父页面元素和window对象
    jQuery使用blur()方法触发两次的解决方法
    java使用freemarker生成word
    java实现下载文件
    IE11中实现颜色渐变
    MYSQL中INET_ATON()函数
    数据库SQL实战(1)
    MYSQL表中向SET类型的字段插入值时值之间不能有空格
    MYSQL表中设置字段类型为TIMESTAMP时的注意事项
    SQL中判断值是否为NULL
  • 原文地址:https://www.cnblogs.com/pressforward/p/7764946.html
Copyright © 2011-2022 走看看