[英]How do I pass a List from C# angular to Angular controller?
我是Angular的新手,我想在.NET MVC應用程序中實現它,但是我對如何從C#發送數據感到困惑。 在我以前的應用程序中,我已經使用SignalR進行所有的客戶端-服務器通信,並且可以將對象從服務器無縫地返回到客戶端,而無需進行字符串化,序列化或反序列化。.我想使用Angular並不是那么容易嗎? 例如,我有服務器端方法:
[HttpGet]
public int TestInt() { return 42; }
[HttpGet]
public string TestString() { return "hooray"; }
[HttpGet]
public List<int> TestList() { return new List<int> {0, 1, 2, 3, 4};}
然后在我的Angular控制器中,我有一個使用$ http.get調用這些方法的函數
$http.get('/UserRequest/TestInt').success(function (data) { var x = data; });
$http.get('/UserRequest/TestString').success(function (data) {var y = data; });
$http.get('/UserRequest/TestList').success(function (data) {var z = data;});
現在,前兩個工作按預期進行(盡管TestInt以字符串形式而不是int返回值),但是最后一個僅返回“ System.Collections.Generic.List`1 [System.Int32]”。
我應該怎么做才能通過$ http.get將列表傳遞給angular? 如果這是我自己的自定義對象怎么辦? 仍然僅使用SignalR來獲取數據,然后使用Angular來僅調用SignalR方法是否明智?
如果您不使用WebApi,而僅使用普通的ASP.NET MVC,則可能必須執行以下操作
public JsonResult TestList()
{
return this.Json(new List<int> { 1, 2, 3 });
}
在angularjs控制器中,必須在成功事件中調用angular服務,然后才能將數據存儲到范圍
app.controller('mycontroler',['$scope','$http', function($scope,$http){
$http.get('/UserRequest/TestInt').success(function (data) {
$scope.data= data; //this scope object we can access in html
});
}])
那是因為在ASP.NET MVC中,當您簡單地返回一個不會從ActionResult繼承的類型時,框架通過執行ToString()方法來“字符串化”它。
您可以使用JsonResult(最佳選項),也可以像這樣序列化自己:
return Newtonsoft.Json.JsonConvert.SerializeObject(new List<int>() { 2, 3, 4, 5, 5 })
(返回一個字符串)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.