在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) {
             //內部實現方法

            }
        });

  

  

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM