Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 将ID从工厂传递到webservice_Asp.net_Angularjs_Ajax_Webmethod_Angularjs Resource - Fatal编程技术网

Asp.net 将ID从工厂传递到webservice

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

我是一个新的角度和通过一些问题的工作。虽然我知道这是一个小问题,但我正在努力解决如何将参数从工厂传递到web服务的语法问题。我的错误来自web服务,因为缺少参数id

以下是我的配置状态:

            .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.net
webservice
?仍然缺少该参数id@TroyBryant很抱歉我错过了另一部分..服务端上的参数名似乎是
id
,因此您应该在资源对象中以与
return productResource.getById.get({id:productId})相同的方式传递它。$promise