2015-09-20 198 views
0

控制器返回數據,但是我無法在HTML文件中迭代它。但是,使用表達式{{電話}}直接顯示返回的數據。我相信數據是以字符串而不是json的形式返回的。我在期待與循環中返回的所有數據相對應的名稱和片段。

<body ng-app="phonecatApp" ng-controller="PhoneListCtrl" > 
    Search: <input ng-model="query"> 
    Sort By: 
    <select ng-model="orderByFilter"> 
     <option value="name">Alphabetical</option> 
     <option value="age">Numerical</option> 
    </select> 
    <ul> 
     <li ng-repeat="phone in phones | orderBy:orderByFilter"> 
      <span>{{phone.name}}</span> 
      <span>{{phone.snippet}}</span> 
     </li> 
    </ul> 

    <script src="~/Scripts/AngularScript.js"></script> 

</body> 

角js腳本

var phonecatApp = angular.module('phonecatApp', []); 
phonecatApp.controller('PhoneListCtrl', function ($scope, $http) { 
    $http.get('Home/GetJson').success(function (data){   
     $scope.phones = data; 
    }); 
}); 

控制器的操作方法

public JsonResult GetJson() 
     { 
      string variablename = "[{'name': 'Nexus S','snippet': 'Fast just got faster with Nexus S.', 'age': 1}]"; 
      return Json (variablename, JsonRequestBehavior.AllowGet);     
     } 

回答

2

既然你已經有一個JSON格式的數據,你並不需要使用方法Json,因爲它系列化該物體再次被覆蓋。您可以使用方法Content代替:

public ActionResult GetJson() 
{ 
    string variablename = "[{'name': 'Nexus S','snippet': 'Fast just got faster with Nexus S.', 'age': 1}]"; 
    return Content(variablename); 
} 

或者,而不是提供硬編碼的數據,你可以創建一個對象,並允許方法Json序列化對象:

public ActionResult GetJson() 
{ 
    var resultObject = new object [] { 
     new { 
      name="Nexus S", 
      snippet= "Fast just got faster with Nexus S.", 
      age= 1 
     } 
    }; 
    return Json (resultObject, JsonRequestBehavior.AllowGet);     
} 
0

您也可以固定在這個問題客戶端。只是解析響應將其設置爲phones

$scope.phones = JSON.parse(data); 
0

也許要傳遞的內容作爲字符串的問題之前,因爲它已經被序列化爲JSON,而不是一個對象。

可以返回的內容是這樣的:

然而,最好的選擇是傳遞一個對象,讓Json()序列化作爲@dotnetom在這個答案表示。