我正在尝试将复杂对象从角度服务传递给MVC控制器。下面是代码 - :
角度控制器
this.saveResult = function (resultData) {
return $http.post("/Form/SaveData/" + resultData);
}
角色服务
[System.Web.Http.HttpPost]
public string SaveData([FromBody] resultData data)
{
//operation to perform
return "Data Reached";
}
MVC控制器
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.1.Final</version>
</dependency>
当我尝试将复杂对象从Angular服务传递给mvc控制器时。它给我null,即object变为null。
请建议。
答案 0 :(得分:2)
使用$http.post
方法时,需要将数据对象作为第二个参数传递。您可以阅读here
所以你的角度代码看起来应该是
$http.post("/Form/SaveData/", data);
然后,您需要服务器端表示您传递WebApi控制器的数据
public class MyCustomObject
{
public string Name { get; set; }
public MyCustomAddress Address { get; set; }
}
public class MyCustomAddress
{
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string Contact { get; set; }
}
您需要更新WebApi控制器代码以使用新服务器端类作为参数。请注意,我没有使用[FromBody]
属性作为this链接说明当您要强制Web API读取简单[FromBody]属性>从请求正文中键入(您的类型是复杂类型)
要强制Web API从请求正文中读取简单类型,请将[FromBody]属性添加到参数
更新了WebApi控制器代码,没有 [FromBody]
属性:
[System.Web.Http.HttpPost]
public string SaveData(MyCustomObject data)
{
//operation to perform
return "Data Reached";
}
答案 1 :(得分:0)
将您的帖子功能更改为此类
$http.post('/Form/SaveData/', resultData)
.success(function (data, status, headers, config) {
})
.error(function (data, status, headers, config) {
});
答案 2 :(得分:0)
你的post命令错了。它应该是:
$http.post("/Form/SaveData/",{resultData: resultData});
答案 3 :(得分:0)
问题是您需要添加以下标头-> 'Content-Type': 'application/x-www-form-urlencoded'
$http.post('/Form/SaveData/', resultData, {headers: {'Content-Type': 'application/x-www-form-urlencoded'}});