0

我的 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,

或 MyModel 中存在的 MyList :

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
};
4

1 回答 1

1

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

所以回答你的问题:

数据://在这里放什么?

在 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
});


这是你的问题的答案吗?

于 2017-06-23T13:36:31.363 回答