【发布时间】:2016-03-02 18:43:33
【问题描述】:
我尝试点击我的 API 控制器,我可以在那里实现它。但是,该方法没有从请求正文中获取我的参数。我知道这是一件小事。
我尝试过以多种不同方式围绕添加参数移动服务。到目前为止似乎没有任何效果。
注意事项
如果有帮助,这是一个 MVC 4 应用程序。我相信这是角度语法或控制器属性中的一些东西。
我正在使用 HTTPPost。
服务
(function () {
'use strict';
var rmdsnewServices = angular.module('rmdsnewServices', ['ngResource']);
rmdsnewServices.factory('rmds', ['$resource',
function ($resource) {
return {
rmdnewly: $resource('/api/rmd/', {}, {
query: {
method: 'GET', params: {}, url: '/api/rmd/getNewly/', isArray: false,
transformResponse: function (data) { return { list: angular.fromJson(data) } }
}
}),
rmdsave: $resource('/api/rmd/AddRMD/:newrmd', { newrmd: '@newrmd' }, {
save: {
method: 'POST', params: { newrmd: '@newrmd' }
}
})
};
}]);
})();
API 控制器
[Route("api/rmd/AddRMD")]
[HttpPost]
public HttpResponseMessage AddRMD([FromBody]string newrmd)
{
var rmd = newrmd;
bool result;
//result = rs.AddRMD(newrmd);
result = true;
if (result)
{
return new HttpResponseMessage(System.Net.HttpStatusCode.OK);
}
else
{
return new HttpResponseMessage(System.Net.HttpStatusCode.ExpectationFailed);
}
}
【问题讨论】:
-
IINM 您正在发送一个 (JSON) 对象,但是,API 需要一个“简单的”
string。检查浏览器发送的有效负载以验证实际发布到您的端点的内容。嗯…… -
尝试在您的 api 中将签名更改为:public HttpResponseMessage AddRMD(string newrmd)
-
@AmmarHamidou 如果我取下 [FromBody],我将不再使用该方法。我得到一个 404 未找到。
-
@EdSF 我正在使用此链接中的示例。 asp.net/web-api/overview/formats-and-model-binding/…
-
是的。如果您查看它使用
[FromBody] string name的示例,您可以看到 API 期望在 “示例客户端请求” 中显示什么 - 您可以看到它只是一个string(“Alice”),与您通过 Angular{ newrmd: '@newrmd' }(json 对象)发送的内容相比
标签: asp.net angularjs asp.net-mvc asp.net-web-api2 angular-resource