簡體   English   中英

如何將列表從C#angular傳遞到Angular控制器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM