.net core 對http POST 處理時的參數傳遞

一般分兩種

1.Body,  一般用於傳遞複雜一點的json數據

服務器端:

        [HttpPost] 
        public  IActionResult Fill([FromBody] dynamic data)
        {
             string a=data.amount;
        }

只能接收一個參數,無法把json分解成多個參數,也許是因爲json裏可能包含多層數據。必須使用[FromBody]才能解析出來。

這裏的dynamic可以換成一個具體的類

JS:

        var data = { 
           amount: 10, 
           name: 'liu min'
        };
        $.ajax({
            url: '/FillMoney/Fill',
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify(data),
            success: function (data) {

             }
         });

2.Form , 一般用於頁面數據提交

服務端: 有三種寫法

//寫法1     
  [HttpPost] 
        public IActionResult Fill([FromForm] Pay data)//這裏不能用dynamic,必須指定類型
        { 
            string a = data.amount; 
            return Content("OK");
        }
       .....
        public class Pay{

            public string amount{get;set;}
            //public string amount;//這樣是錯誤的,會娶不到值,必須定義成屬性
            public string name{get;set;}
          }
        ........
//寫法2    
      [HttpPost] 
        public IActionResult Fill(string amount)//這裏的參數名稱必須和調用方一致
        { 
            string a = amount; 
            return Content("OK");
        }
//寫法3    
      [HttpPost] 
        public IActionResult Fill() 
        {  
            string a = Request.Form['amount']; //用這種方式更方便,不需要定義一個類
            return Content("OK");
        }
      

錯誤寫法:

[HttpPost] 
        public IActionResult Fill([FromBody] Pay data)
        { 
            string a = data.amount; 
            return Content("OK");
        }

這種寫法調用方會收到415錯誤 

 

JS:

        var data = 'amount=10&name=liu min';//拼接字符串
        };
        $.ajax({
            url: '/FillMoney/Fill',
            type: 'POST',
            contentType: 'application/x-www-form-urlencoded',
            data: data,
            success: function (data) {

             }
         });
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章