【发布时间】:2015-10-26 16:15:04
【问题描述】:
我正在使用 AngularJS,我正在尝试将 json 从我的服务发送到 webAPI 控制器。当我通过发送时,我在 webApi 函数的参数中收到 null。
我的功能服务是:
angular.module('productsApp')
.service('ProductDetailService', ['$http', function ($http) {
var urlBase = "/api/productdetail";
this.Salvar = function (product) {
var mydata = JSON.stringify(product);
debugger;
return $http({
method: 'POST',
url: urlBase + "/salvar/" + mydata,
data: mydata,
headers: { 'Content-Type': 'application/json' }
});
};
}]);
我在 webAPI 中的代码是:
public class ProductDetailController : BaseController
{
[Route("api/productdetail/salvar/{item}")]
[HttpPost]
public bool Salvar(string item)
{
return true;
}
}
我的 app.js 是:
var app = angular.module('productsApp', ['ngRoute']);
app.config(['$routeProvider', function ($routeProvider)
{
$routeProvider.when('/', {
controller: 'ProductController',
templateUrl: '/Scripts/App/Html/ProductList.html'
}).
when('/testprice', {
controller: 'ProductController',
templateUrl: '/Scripts/App/Html/ProductDetail.html'
}).
when('/editar/1', {
controller: 'ProductController',
templateUrl: '/Scripts/App/Html/ProductDetail.html'
}).
when('/api/productdetail/salvar/*', {
controller: 'ProductDetailController',
templateUrl: '/Scripts/App/Html/ProductDetail.html'
})
.otherwise({ redirectTo: '/' });
}]);
服务中的问题是当我在 webService 中添加类型 data: something 时,我收到了 null 并且我必须在完整的 uri 中添加我的数据,例如:
http//.../api/productdetail/salvar/{mydata}
使用它,它正在工作。
怎么了?
【问题讨论】:
-
$http调用服务时mydata的值是多少?
-
这是一个产品类,我将其转换为 JSON.stringfly
-
不。那它就行不通了,因为你的参数是你控制器中的字符串类型。它始终为空。
-
@Turbulence 错误,您可以对 json 进行 url 编码并作为查询字符串的一部分发送。这是一个坏主意,但有时您需要这样做以涵盖一些边缘情况......
-
@MatiasFidemraizer - 感谢您提供信息。让我编辑评论。
标签: c# json angularjs asp.net-web-api