AngularJS发布到.NET控制器始终为空
问题描述:
我想将数据从角控制器发布到.NET终点。AngularJS发布到.NET控制器始终为空
角函数看起来像这样:
vm.save = function() {
$http({
url: 'Home/Save',
method: 'POST',
data: vm.colours,
contentType: "application/json; charset=utf-8",
header: {'Content-type': 'application/json'}
})
.success(function (response) {
alert(response)
}
)
};
和结束点看起来像这样:
[System.Web.Mvc.HttpPost]
public void Save([FromBody]Colours input)
{
var temp = input;
}
发布到结束点的数据是: Post header from Chrome
而颜色型号:
public class Colours
{
public string color { get; set; }
public string category { get; set; }
public List<Code> codes { get; set; }
public string type { get; set; }
}
public class Code
{
public string rgba { get; set; }
public string hex { get; set; }
}
如果我激发保存功能,我点击结束点,并试图将终点改为纯字符串/传递一个普通字符串并删除[FromBody],但传入的值始终为空。
我也试过改变角度到简写版本的帖子,但我不认为这是问题,如果我检查发布的http响应是全部存在的,所以断开连接必须是别的地方。
围绕$ http.post提出了一个空值的问题很多,但没有一个解决方案似乎解决了我的问题。
我错过了什么?我对角度来说比较陌生,所以它可能是明显的。
答
刚刚有一个顿悟并解决了我的问题,问题是发送的对象是一个颜色数组而不是单个颜色。改变了终点如下,这就解决了这个问题:
[System.Web.Mvc.HttpPost]
public void Save(List<Colours> input)
{
var temp = input;
}
什么是'vm.colours'在Angular中的内容?你确定要发送的数据被正确格式化为反序列化到你在C#中的Colours类的实例吗? –
试一试,将C#函数的签名更改为'public void Save(string input)',然后在该代码中尝试使用Newtonsoft Json.Net反序列化为C#对象。确保使用Newtonsoft Json.Net序列化C#对象生成的字符串与从角度发送JSON对象相同。如果有什么不清楚,请告诉我。 –
只要'vm.colours'是一个与'Colours'类具有相同结构的对象,您的代码就应该可以工作。 – Shyju