我的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,
或MyLis t這是存在於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
};
因此,發送'myData' - 那個將在WebApi中匹配您的模型;)您不需要'myModelData'。 (WebApi操作中的變量名稱在該上下文中並不重要,只有類型必須匹配)。 –