netcore 對 Action 方法進行模型綁定參數注意的細節:
1.mvc控制器。一般繼承的是 Controller (Controller 里面包含視圖),
對 action 方法參數 模型綁定的時候,參數的推斷來源默認是 從表單中獲取 相當於默認有 [FromFrom] 這個特性加在參數旁邊
2.webapi,繼承 ControllerBase(里面沒有關於視圖的方法),
webapi 一般加個特性 [ApiController] ,如果加了這個特性,對 action 方法參數 模型綁定的時候,參數的推斷來源默認是 從主體中獲取 相當於默認有 [FromBody] 這個特性加在參數旁邊
使用Content-Type: application/x-www-form-urlencoded; charset=UTF-8 來編碼
使用 Content-Type: application/json 來編碼
1 /// <summary> 2 /// 多參數獲取,數據通過json序列化后都在RequestPayload中,實體參數與普通參整成一個 3 /// </summary> 4 /// <param name="jData"></param> 5 /// <returns></returns> 6 [HttpPost] 7 [Route("/get/kj")] 8 public IActionResult io([FromBody]Newtonsoft.Json.Linq.JObject jData) 9 { 10 // function ee() { 11 // var model = { a: 1, b: 2,c: 4,}; 12 // var arr = [{ "a": 1, "b": 1, "c": 2, "c" : 3 }];15 // var khg = 16 // { 17 // k: arr, //直接數組不可以的,后端用 Jobject接受到了,序列化會導致報錯 18 // //k: model, //直接寫json對象是可以的 19 // yy: 34, 20 // bb: "好呀", 21 // };23 // $.ajax({ 24 // type: "post", 25 // url: "/get/kj", 26 // data: JSON.stringify(khg), 27 // contentType: "application/json;charset=utf-8" 28 // }); 29 // } 30 //dynamic json = jData; 31 //Newtonsoft.Json.Linq.JObject jUser = json.k; 32 //KJ kmmm = jUser.ToObject<KJ>(); 33 //int yy = json.yy; 34 //string bb = json.bb; 35 36 return Json("OK"); 37 } 38
