我想知道很长一段时间,我无法找到解决方案,也许有人解决了类似的问题。
假设我们想通过$ 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
}
有人可以帮助我吗?
答案 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;
};