2015-09-20 89 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在这个答案表示。