如何使用AngularJS $ HTTP将对象 数组发布到WebAPI .NET/C#控制器



我的C#模型:

public class MyModel
{
    public string MyString { get; set; }
    public int MyInt { get; set; }
    public List<MyList> MyList { get; set; }
}
public class MyList
{
    public string MyListString { get; set; }
    public int MyListInt { get; set; }
}

我的C#方法:

[HttpPost]
public void SomeMethod(MyModel MyModel)
{

我的angularjs $ http:

$http({
    url: "/api/SomeCtrl/SomeMethod",
    method: "POST",
    data: // WHAT TO PUT HERE?
    headers: { 'Content-Type': 'application/json' }
});

我可以用:

填充mymodel
data: transportDocumentData.TDShipment,

或mylist,它在mymodel中带有:

data: JSON.stringify({ Package: transportDocumentData.TDShipment.packageData }),

,但我不知道如何填充它们。我尝试了这两个选项:

$http({
    url: "/api/SomeCtrl/SomeMethod",
    method: "POST",
    data: myModelData.MyModel,
    data: JSON.stringify({ MyList: myModelData.MyModel.myListData }),
    headers: { 'Content-Type': 'application/json' }
});

它不起作用,因为第二个数据覆盖了第一个数据。我也尝试了:

var abc = myModelData.MyModel;
$http({
    url: "/api/SomeCtrl/SomeMethod",
    method: "POST",
    data: JSON.stringify({ MyList: myModelData.MyModel.myListData }), abc
    headers: { 'Content-Type': 'application/json' }
});

但是在这种情况下,只有myList填充。

我试图修改这样的myMethod:

[HttpPost]
public void SomeMethod(List<MyModel> MyModel)
{

结果甚至更糟。

那么,如何正确完成?

编辑:我忘了包括这些:

$scope.myListData = [{ myListString: "bar", myListInt: 5 }];
$scope.myData = {
    myString: "foo",
    myInt: 3,
    myListData: $scope.myListData
}
 var myModelData = {
    MyModel: $scope.myData
};

您需要创建一个JSON对象,将匹配您的C#模型并发送 - 仅此而已。WebAPI将完成这项工作(模型绑定(。

所以回答您的问题:

data://在这里放置什么?

创建/填充Angular的JSON模型:

$scope.myListData = [{ myListString: "bar", myListInt: 5 }];
$scope.myData = {
    myString: "foo",
    myInt: 3,
    myListData: $scope.myListData
};

直接传递槽:

$http({
    url: "/api/SomeCtrl/SomeMethod",
    method: "POST",
    data: $scope.myData
});


这是您问题的答案吗?

最新更新