2017-08-16 143 views
0

我正在开发Angular 2 ASP.NET Core MVC项目。 我的客户端脚本调用服务器端控制器Angular 2,http post不工作​​

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的服务器端控制器有下列行为

public IActionResult MyAction([FromBody] myViewModel viewModel) 

它工作正常,客户端将派遣客户视图模型中,服务器正在接受这一观点模型和正确匹配它到服务器端模型

在某些时候我不得不附加jquery包与jquery.ui,它打破了美。

客户端仍在调用服务器,服务器正在接受Action中的呼叫。不幸的是,它停止正确地映射视图模型。该动作接收null而不是视图模型对象

有什么想法?

+0

首先前,在测试应用邮递员web服务,如果这样的作品,看看网络打电话,什么是错误?通常需要有域名/​​/等等。 – TGarrett

+1

你没有'JSON.stringify'试过吗? –

+0

刚刚删除了JSON.stringify并将其复选。 它似乎通过适当的视图模型,直到其中一个属性(日期持有者)得到改变像“25/08/2017”,并且它似乎导致视图模型解析器崩溃? –

回答

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); 
    }