2016-08-30 96 views
0

我简单的Web API

[HttpGet] 
     public JsonResult<LocationDataObject> GetLocationData(string absPath) 
     { 
      var subdirectoriesInfos = GetDirectoryInfos(absPath); 
      var response = new LocationDataObject(
        new List<DirectoryInfo>(subdirectoriesInfos.Where(si => si.CalculateSize() <= 100000).Select(si => si)), 
        new List<DirectoryInfo>(subdirectoriesInfos.Where(si => (si.CalculateSize() > 100000 && si.CalculateSize() < 500000)).Select(si => si)), 
        new List<DirectoryInfo>(subdirectoriesInfos.Where(si => si.CalculateSize() > 10000000).Select(si => si)), 
        GetFileInfos(absPath)); 
      return Json(response); 
     }. 

当我这样做:

$http.get('api/browsingdata/GetLocationData?absPath=' + currentLocation.FullPath) 
       .then(
        function (response) { 
         $scope.subdirectories_1 = response.data.Lt10mb; 
         $scope.subdirectories_2 = response.data.Between10mbAnd50mb; 
         $scope.subdirectories_2 = response.data.Gt100mb; 

         alert(response); 
}); 

结果是object Object不具有的特性LocationDataObject。我在这里做错了什么?

+0

更好的是使用“console.log(response);”比警报(响应),你将能够想到,不要忘记看到“控制台” –

回答

0

您的LocationDataObject是对象,这就是为什么它显示[object object]

,如果你想使用LocationDataObject财产,然后用

var response = new{LocationDataObject = new LocationDataObject(
        new List<DirectoryInfo>(subdirectoriesInfos.Where(si => si.CalculateSize() <= 100000).Select(si => si)), 
        new List<DirectoryInfo>(subdirectoriesInfos.Where(si => (si.CalculateSize() > 100000 && si.CalculateSize() < 500000)).Select(si => si)), 
        new List<DirectoryInfo>(subdirectoriesInfos.Where(si => si.CalculateSize() > 10000000).Select(si => si)), 
        GetFileInfos(absPath)) 
}; 
return Json(response); 

那么你可以使用

response.LocationDataObject 

如果你仍然迷惑,把调试问题还是console.log(response);代替alert和检查控制台

0

我猜object Object被打印到警报。或者你可能需要澄清你的问题。

对象将在警报中字符串化,因此没有toString()方法的对象将显示为object Object。如果必须,请使用console.log打印您的回复,因为它会显示实际的对象,而不是字符串化的对象。

相关问题