我对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返回),但是最后一个只返回&#34; System.Collections.Generic.List`1 [System.Int32 ]&#34 ;.
我应该怎么做才能通过$ http.get将列表传递给angular?如果它是我自己的自定义对象怎么办?仍然只是使用SignalR来获取数据,然后使用Angular来调用SignalR方法是明智的吗?
答案 0 :(得分:2)
如果您不使用WebApi而只使用普通的ASP.NET MVC,则可能需要执行以下操作
public JsonResult TestList()
{
return this.Json(new List<int> { 1, 2, 3 });
}
答案 1 :(得分:0)
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
});
}])
答案 2 :(得分:0)
那是因为在ASP.NET MVC中,当你简单地返回一个类型,它从ActionResult继承了框架&#34; stringfies&#34;它通过执行ToString()方法。
您可以使用JsonResult(最佳选项),也可以像这样序列化自己:
return Newtonsoft.Json.JsonConvert.SerializeObject(new List<int>() { 2, 3, 4, 5, 5 })
(返回一个字符串)