【问题标题】:POST data from AngularJS client to ASP.NET WebAPI将数据从 AngularJS 客户端发布到 ASP.NET WebAPI
【发布时间】:2015-11-28 06:38:27
【问题描述】:

我有点困惑 AngularJS 如何将数据发布到我的 WebAPI 控制器。通常,当我将 AngularJS 中的数据 POST 到 MVC 控制器时,我会这样做:

var data = { "value": "some string" };
$http.post('/api/products', { data
}).success(function () {...

但是,在 WebAPI 控制器中,字符串值总是返回为 null。

在将数据传递到 Web api 控制器时,我是否需要稍微不同地发布数据?

这是我的控制器中的方法:

    [HttpPost]
    public void Post([FromBody]string value)
    {
     .....
    }

编辑 不确定这是否有帮助,但这是 Fiddler 的标题:

POST http://localhost:58167/api/products/ HTTP/1.1 主机: 本地主机:58167 连接:保持活动内容长度:11 接受: application/json, text/plain, / 来源:http://localhost:58167 用户代理:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,如 Gecko)Chrome/44.0.2403.157 Safari/537.36 内容类型: 应用程序/json;charset=UTF-8 引用者:http://localhost:58167/ Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.8

一些字符串

【问题讨论】:

  • @Prashant 是的,我已经阅读了那篇文章……包括其他一些文章。看来我做的一切都是正确的,但该值始终显示为空。如果我使用 [FormBody] 那么我不需要使用 Stringify,对吗?我
  • 您是否在标题中将内容类型指定为 JSON
  • @Prashant 是的——我也试过了。
  • 也许将您的 Web API 从接受字符串更改为接受模型对象,例如 public class Product { public string Value {get; set;} }

标签: asp.net angularjs asp.net-web-api


【解决方案1】:

更改您的 Web API 以接受复杂类型(模型)而不是字符串。

public class Product
{
    public string Value {get; set;}
}

[HttpPost]
public void Post([FromBody]Product product)
{
    Debug.WriteLine(product.Value);
}

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2016-07-22
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多