AngularJS - 通过$ http将对象数组传递给MVC Controller

时间:2016-04-21 11:23:48

标签: angularjs asp.net-mvc service controller

我想知道很长一段时间,我无法找到解决方案,也许有人解决了类似的问题。

假设我们想通过$ http服务将对象数组传递给MVC控制器。 这个数组是以角度创建的,所以我不知道正确的类型(只是var)。 问题是我不知道MVC功能应该是什么类型的参数

AngularJS控制器

$scope.DoSth = function (){
    var data = [{
        Id: "1",
        Value: "apple"
    },
    {
        Id: "2",
        Value: "banana"
    }];
};

//DoSthService injected into angular controller

DoSthService.doSth(data)
    .success(function(result){
        //sth with success result
    })
    .error(function(result){
        //sth with error result
    });

AngularJS服务:

this.doSth = function(data){
    var response = $http({
        method: "post",
        url: "Home/DoSth",
        data: data
        //or data: JSON.stringify(data) ??
        });
    return response;
};

MVC控制器:

public string DoSth(**what type here?** data)
{
    //do sth and return string
}

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

创建一个类

public class  MyClass
{
  public int Id { get; set;}
  public string Value { get; set;}
}

使用方法中的列表

public string DoSth(List<MyClass> data)
{
    //access your data
    //data[0].Id,data[0].Value or by any other way
}

无需更改任何js代码

答案 1 :(得分:0)

You have to put model here.

public string DoSth(FruitModel  data)
{
    //do sth and return string
}

答案 2 :(得分:0)

如果我没弄错,你可以用stringtype(如果发送JSON)来做到这一点

public string DoSth(string data)
{
    //do sth and return string
}

不要忘记在您的AJAX请求中添加此标头:

headers: {
   'Content-Type': 'application/json'
}

同样字符串化,例如:

data: JSON.stringify(data)

如果你做得对,你的AJAX请求应如下所示:

this.doSth = function(data){
    var response = $http({
            method: 'post',
            url: 'Home/DoSth',
            headers: {
               'Content-Type': 'application/json'
            },
            data: JSON.stringify(data)
        });
    return response;
};