一般分兩種
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) {
}
});