Asp.net 将ID从工厂传递到webservice
我是一个新的角度和通过一些问题的工作。虽然我知道这是一个小问题,但我正在努力解决如何将参数从工厂传递到web服务的语法问题。我的错误来自web服务,因为缺少参数id 以下是我的配置状态:Asp.net 将ID从工厂传递到webservice,asp.net,angularjs,ajax,webmethod,angularjs-resource,Asp.net,Angularjs,Ajax,Webmethod,Angularjs Resource,我是一个新的角度和通过一些问题的工作。虽然我知道这是一个小问题,但我正在努力解决如何将参数从工厂传递到web服务的语法问题。我的错误来自web服务,因为缺少参数id 以下是我的配置状态: .state("productDetail", { url:"/products/:productId", templateUrl: "app/products/productDetailView.html", co
.state("productDetail", {
url:"/products/:productId",
templateUrl: "app/products/productDetailView.html",
controller: "ProductDetailCtrl as vm",
resolve: {
productResource: "productResource",
product: function (productResource, $stateParams) {
var productId = $stateParams.productId;
return productResource.getById.get({ productId: productId }).promise;
}
}
这是我的角度资源:
angular
.module("commonservices")
.factory("productResource", ["$resource", function($resource){
return {
getAll:$resource("WebService.asmx/GetAll"),
getById: $resource("WebService.asmx/GetById/:productId", { productId: '@productId' })
};
}]);
如果需要在resolve回调中插入服务,请使用以下语法:
.state("productDetail", {
url:"/products/:productId",
templateUrl: "app/products/productDetailView.html",
controller: "ProductDetailCtrl as vm",
resolve: {
productResource: "productResource",
product: ['productResource','$stateParams',function (productResource, $stateParams) {
var productId = $stateParams.productId;
return productResource.getById.get({ productId: productId }).promise;
}]
}
您的代码看起来很好,只有当它将中断时,如果您在
$stateParams
中没有productId
的值,请尝试通过执行console.log($stateParams.productId)
来检查该值
另外,您在从$resource
对象返回承诺时也有输入错误。它应该是$promise
而不是.promise
return productResource.getById.get({ productId: productId }).$promise
编辑
若要将变量传递给webmethod,则应将其作为查询参数传递,而不是通过假定它直接在URL
中传递。对于这种改变,你的资源如下
getById: $resource("WebService.asmx/GetById", { });
然后将参数名称更改为id
,因为它是我们传递给webservice的名称。它应该作为查询参数传递,然后只有该参数才会被WebMethod
读取
return productResource.getById.get({ id: productId }).$promise
将形成URL,如
WebService.asmx/GetById?id=1
(1假定为productId)。productId在登录到控制台时有一个值。但现在的问题是web服务方法名不是valid@TroyBryant您正在使用ASP.netwebservice
?仍然缺少该参数id@TroyBryant很抱歉我错过了另一部分..服务端上的参数名似乎是id
,因此您应该在资源对象中以与return productResource.getById.get({id:productId})相同的方式传递它。$promise