我正在开发Angular 2 ASP.NET Core MVC项目。 我的客户端脚本调用服务器端控制器
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
var url = "MyController/MyAction/";
var t = this.http.post(url, JSON.stringify(formData), options);
MVC服务器端控制器具有以下Action
public IActionResult MyAction([FromBody] myViewModel viewModel)
它运行正常,客户端正在发送客户端视图模型,服务器正在接收该视图模型并将其正确匹配到服务器端模型
在某些时候我不得不将jquery包与jquery.ui一起附加,这打破了它的美丽。
客户端仍在调用服务器,服务器正在Action中正确接受呼叫。不幸的是,它正确地映射了视图模型。该操作接收null而不是视图模型对象
任何想法?
答案 0 :(得分:0)
最后我在这里找到了我的问题......
客户端并不真正需要任何JSON.stringify。 在它的顶部,我错过了调用的订阅部分,它实际上触发了客户端发送服务器请求。
getMyServerSideData(form: MyForm) {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
var url = "Report/GetMyServerData/";
return this.http.post(url, form, options)
.map(response => {
return response.json() as MyForm;
})
.subscribe(data=>{
console.write(data);
});
}
加上MVC 5服务器端动作调用在参数前面不需要[FromBody]标签
[HttpPost]
public ActionResult GetCOFData(MyFormServerSideViewModel viewModel)
{
...
...
...
viewModel.prop1 = "aaa",
viewModel.prop2 = "bbb"
return Json(response, JsonRequestBehavior.AllowGet);
}