2017-06-23 48 views
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, 

或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 
}; 
+0

因此,發送'myData' - 那個將在WebApi中匹配您的模型;)您不需要'myModelData'。 (WebApi操作中的變量名稱在該上下文中並不重要,只有類型必須匹配)。 –

回答

0

你只需要創建一個JSON對象,將匹配你的C#模型,並把它 - 這一切。 WebApi將完成這項工作(模型綁定)。

所以回答你的問題:

數據://放什麼在這裏?

創建/填滿你的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 
}); 


就在你的疑問,答案嗎?

+0

我更新了我的問題,以使事情更清晰。我已經有了你在我的代碼中建議的內容。 – Tomo

+0

我用你的例子更新了我的答案 - 只發送'myData' - 那個將在WebApi中匹配你的模型;)你不需要'myModelData'。 –

+0

我已經嘗試過你自己的解決方案。這樣'公開名單 MyList {get;組; }'不會填寫。我也試過'public MyList MyList {get;組; '',可以肯定的是,結果是一樣的。 – Tomo

相關問題