【发布时间】:2016-06-17 20:33:39
【问题描述】:
我正在尝试将 AngularJS 中的对象发布到 MVC 5 WebApi 控制器,但该值始终为空
我可以在 Chrome 开发工具中看到请求中可以找到数据。
角度控制器:
$scope.join = function () {
if (!$scope.joinForm.$valid) return;
// Writing it to the server
var payload = $scope.user;
var res = $http.post('/api/some', JSON.stringify( { Data: { payload } }), { header: { 'Content-Type': 'application/json' } });
res.success(function (data, status, headers, config) {
$scope.message = data;
});
res.error(function (data, status, headers, config) {
alert("failure message: " + JSON.stringify({ data: data }));
});
}
MVC 5 API 控制器:
public class SomeController : ApiController
{
// POST api/values
public void Post([FromBody]string value)
{
Trace.Write(value);
}
}
如果我将对象包装在 {Data: {payload}} 中
{"Data":{"payload":{"symbol":"xxx","amount":12000,"startdate":"2014-05-23T14:26:54.106Z","enddate":"2015-05-23T14:26:54.106Z","interval":"7 minutes"}}}
如果我不包装它,我会得到:
{"symbol":"xxx","amount":12000,"startdate":"2014-05-23T14:26:54.106Z","enddate":"2015-05-23T14:26:54.106Z","interval":"7 minutes"}
(Visual Studio 2015 配置为使用 IISExpress)
有什么想法吗?
【问题讨论】:
-
好吧,一方面,您脚本中的 url 指向的 url 与您在此处为控制器/操作组合提供的 url 不同
-
@DanPantry
POST api/some会命中SomeController.Post