Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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
C# 使用$resource从AngularJs中的Web API访问HttpResponseMessage_C#_Angularjs_Angular Promise_Angular Resource - Fatal编程技术网

C# 使用$resource从AngularJs中的Web API访问HttpResponseMessage

C# 使用$resource从AngularJs中的Web API访问HttpResponseMessage,c#,angularjs,angular-promise,angular-resource,C#,Angularjs,Angular Promise,Angular Resource,我有一个c#web api方法,它返回整数值为HttpResponseMessage,希望使用$resource从AngularJs中的响应访问相同的值,如何 Web API: [HttpPut] [Route("DeleteFile")] public HttpResponseMessage DeleteFile(int cabinetFileID) { var fileName = cabinetDataAccess.G

我有一个c#web api方法,它返回整数值为
HttpResponseMessage
,希望使用$resource从AngularJs中的响应访问相同的值,如何

Web API:

[HttpPut]
        [Route("DeleteFile")]
        public HttpResponseMessage DeleteFile(int cabinetFileID)
        {
            var fileName = cabinetDataAccess.GetFilePath(cabinetFileID);                  
                var returnVal = cabinetDataAccess.DeleteCabinetFile(cabinetFileID, UserEmail);
                return Request.CreateResponse(HttpStatusCode.OK, returnVal);                

        }
服务:

(function () {
    'use strict';

    angular
        .module('data')
        .factory('cabinetService', cabinetService);

    cabinetService.$inject = ['$resource', 'serviceBase'];

    function cabinetService($resource, serviceBase) {
            var deleteCabinetFileResource = $resource(serviceBase + '/api/Cabinet/DeleteFile?cabinetFileID=:cabinetFileID',null,{'update':{method:'PUT'}});

        return {                
            deleteCabinetFile: deleteCabinetFile
        };

        function deleteCabinetFile(cabinetFileID){
            return deleteCabinetFileResource
                .update({cabinetFileID:cabinetFileID},null)
                .$promise;
        }
    }
}());
控制器:

function deleteThumbnail(cabinetFileID)
        {
           cabinetService
            .deleteCabinetFile(cabinetFileID)
            .then(function (data) {
                //How do i Access my return value here ???
                //Something like 
                if(data.returnVal === -1)
                //do something
            })
            .catch(function (err) {
                growl.err('Unable to delete  file, Please try later !', {ttl: 20000});
            })
        }
这段代码让我得到了响应,我需要如何从数据中访问返回值?

根据注释将我的c#代码更改为返回Json对象,一切正常

    [HttpPut]
            [Route("DeleteFile")]
            public JObject DeleteFile(int cabinetFileID)
            {
                var fileName = cabinetDataAccess.GetFilePath(cabinetFileID);                  
                    var returnVal = cabinetDataAccess.DeleteCabinetFile(cabinetFileID, UserEmail);
 var jsonString = Json(new JavaScriptSerializer().Serialize(new { returnVal }));
                return JObject.Parse(jsonString.Content);      
            }

在我的AngularJs控制器中,我能够检查执行代码时是否(data.returnVal===-1)

,到底什么包含数据?不,它不是那样工作的。数据具有以下信息:资源{$promise:r,$resolved:true}$promise:r_位字段:33554433_fulfillmentHandler0:(数据)_promise0:undefined\u Receiver 0:undefined\u rejectionHandler0:Resource\uu proto\uuUr$resolved:true\uUu proto\uUu:Resource此链接可能会帮助您:
$Resource
服务使用
angular.copy
填充
$Resource
对象和
angular.copy
忽略原语。让您的服务器返回一个对象,添加一个响应拦截器以将响应转换为一个对象,或者使用
$http
服务。是的,我更改了我的c#code以返回一个Json对象,它成功了。非常感谢你!