我想在MVC4中实现AngularJS。我将如何以mvc4中的angular格式返回JSON。
以下是我的代码:
控制器:
[HttpGet]
public ActionResult sample1()
{
return Json(db.Account_Info.ToList(), JsonRequestBehavior.AllowGet);
}
Account.js
App.controller('Account', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout)
{
$scope.bag = [];
$scope.alldata = function ()
{
//
$http.get('/Accounts/sample1').then(function ($response)
{
$scope.bag = $response;
});
}
//execute on the page load
$timeout(function ()
{
$scope.alldata();
});
}]);
App.js
var App = angular.module('MyApp', []);
查看:
<script src="~/Scripts/angular/angular.min.js"></script>
<script src="~/Scripts/angular/App.js"></script>
<script src="~/Scripts/angular/Account.js"></script>
<h2>sample</h2>
<div ng-app="MyApp" >
<div ng-controller="Account">
<div ng-repeat="acc in bag">
<p>Username: {{acc.username}}</p>
</div>
</div>
</div>
现在,我遇到了这个错误:
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.Account_Info_D9C702CA15FC076225862589F60CD5E8B8EA615EF98D78A1FEB764E267D88F97'.
从控制器返回数据:
需要建议和帮助。提前谢谢。
答案 0 :(得分:0)
像这样使用.net javascript serializer:
return new JavaScriptSerializer().Deserialize<List<Account_Info>>(db.Account_Info.ToList());
反序列化采用泛型。检查您的型号类型。我以为它是一个Account_Info列表。
答案 1 :(得分:0)
您正在处理两个不同的问题。
目前,您的控制器方法不正常工作 - 因此Angular代码不会按预期工作。
在服务器端,当您尝试将对象序列化为JSON时,您会看到错误。添加类似Newtonsoft JSON序列化程序的东西会有所帮助。
控制器方法看起来像这样:
[HttpGet]
public ActionResult sample1()
{
var result = Newtonsoft.Json.JsonConvert.SerializeObject(db.Account_Info.ToList(),
new Newtonsoft.Json.JsonSerializerSettings
{
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize
});
return Json(result, JsonRequestBehavior.AllowGet);
}
一旦您实际从控制器返回值然后,您将需要测试角度代码以查看它是否正常工作。