将C#模型转换为Angular模型。

3

我是angularjs的新手(今天刚开始学习...),我有一个问题,就是如何将c#控制器中的模型传递给angularjs控制器。

看起来,我需要在我的angular控制器中调用一个get方法,从中调用c#控制器,然后获取json并将其加载到$scope.people中以进行进一步的操作:

<script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function ($scope, $http) {

        $http({url: "/Home/GetPersons",method: "GET"
            }).success(function (data) {
                $scope.people = data;
            }).error(function (error) {
                $scope.error = "Failed to load";
        });

     });
</script>

这是我的控制器代码:

  [HttpGet]
    public JsonResult GetPersons()
    {
        using (HRMEntities db = new HRMEntities())
        {
            var EmployeeList = db.Employees.Where(e => e.EmployeeId >= 0).ToList();

            return Json(EmployeeList, JsonRequestBehavior.AllowGet);
        }
    }

作为回应,我收到了500错误代码;请求有什么问题?并且这是否可以更容易地实现?也许可以使用从C#控制器发送到视图的模型来完成。 @model List<Employee>

2
500 表示服务器端错误,因此您需要调试您的方法以查看问题出在哪里。 - Alex
我不知道如何调试它... EmployeeList 已经设置好了,里面有67个元素,下一步已经返回,之后就出现了错误。 - GeekyNuns
2
我最好的猜测是你的EmployeeList包含某种循环引用,因此无法序列化它。请按照以下步骤操作: var myJson = Json(EmployeeList, JsonRequestBehavior.AllowGet); return myJson 是否成功创建了myJson变量? - Alex
创建成功,myJson.data有67个元素,但在return myJson之后仍然出现错误。 - GeekyNuns
@j0ey_wh,请写一个答案,这样我就能将其标记为已解决的问题 :) 谢谢你的帮助! - GeekyNuns
显示剩余4条评论
2个回答

1

所以经过一些讨论,问题的解决方案似乎是这样的:

return Json(EmployeeList.Select(x=>new {Name=x.Name }), JsonRequestBehavior.AllowGet)

或者换句话说,创建一个数据传输对象(DTO),并从EmployeeList中填充它。
也许JSON反序列化存在问题。
很高兴能帮到你!

0

我有点晚了,但我们在公司创建了这个,它非常方便,可以将c#模型与js(vanilla)相关联,并且我们有angularjs工厂模型包装器来扩展域模型功能。

https://github.com/castle-it/sharp2Js


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接