【发布时间】:2017-11-27 02:16:04
【问题描述】:
我的 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
};
【问题讨论】:
-
所以,发送
myData- 那个将与您在WebApi 中的模型匹配;) 您不需要myModelData。 (WebApi 操作中的变量名称在该上下文中并不重要,只有类型必须匹配)。
标签: c# asp.net-web-api stringify angularjs-http entity-model