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提出了一个空值的问题很多,但没有一个解决方案似乎解决了我的问题。

我错过了什么?我对角度来说比较陌生,所以它可能是明显的。

+1

什么是'vm.colours'在Angular中的内容?你确定要发送的数据被正确格式化为反序列化到你在C#中的Colours类的实例吗? –

+0

试一试,将C#函数的签名更改为'public void Save(string input)',然后在该代码中尝试使用Newtonsoft Json.Net反序列化为C#对象。确保使用Newtonsoft Json.Net序列化C#对象生成的字符串与从角度发送JSON对象相同。如果有什么不清楚,请告诉我。 –

+0

只要'vm.colours'是一个与'Colours'类具有相同结构的对象,您的代码就应该可以工作。 – Shyju

刚刚有一个顿悟并解决了我的问题,问题是发送的对象是一个颜色数组而不是单个颜色。改变了终点如下,这就解决了这个问题:

[System.Web.Mvc.HttpPost] 
public void Save(List<Colours> input) 
{ 
    var temp = input; 
}