2016-09-30 99 views
3

我是angularjs的新手(今天開始......),並且將從c#控制器傳遞給angularjs控制器的模型問題。將c#模型轉換爲角模型

看來,我得叫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

+0

我不能得到如何調試it..'EmployeeList'設置,它裏面有67元,下一步是已經返回,之後顯示錯誤。 – GeekyNuns

+2

我最好的猜想是您的EmployeeList包含某種類型的循環引用,因此無法序列化它。像這樣: 'var myJson = Json(EmployeeList,JsonRequestBehavior.AllowGet); return myJson' 是否成功創建'myJson' var? – Alex

回答

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