從this question擴展開來,我試圖將包含複雜對象集合的複雜對象傳遞給ASP.NET Web API控制器操作方法,但我正在查找請求中輸入對象的正確格式時遇到問題。繼續從克里斯托弗·約翰遜的問題的例子(和消除對simplicty某些字段),如果我改變他PhoneRequest
對象包含電話號碼的集合...將包含複雜類型數組的複雜類型傳遞給Web API
public class PhoneRequest
{
public string[] PhoneNumbers { get; set; }
public string State { get; set; }
}
...我要麼傳遞參數作爲URL編碼的查詢字符串:
/api/phonenumber?id[0][State]=UT&id[0][PhoneNumbers][0]=555-1234567
...或POST
它作爲編碼的HTML表格(Content-Type: application/x-www-form-urlencoded
)請求體:
[0][State]=UT&[0][PhoneNumbers][0]=555-1234567
...然後一切都很好。但是,如果我改變PhoneNumbers
從字符串到一個新的PhoneNumber
類型的集合的集合......
public class PhoneRequest
{
public PhoneNumber[] PhoneNumbers { get; set; }
public string State { get; set; }
}
public class PhoneNumber
{
string AreaCode { get; set; }
string Number { get; set; }
}
...和我通過什麼,在我看來是合乎邏輯的方式對象,考慮到以前的結果......
id[0][State]=UT&id[0][PhoneNumbers][0][AreaCode]=555&id[0][PhoneNumbers][0][Number]=1234567
...或再次作爲一個HTML表單提交的身體......
[0][State]=UT&[0][PhoneNumbers][0][AreaCode]=555&[0][PhoneNumbers][0][Number]=1234567
...那麼它仍然使綁定它一個嘗試,並進入我的行動方法,但是該模型只包含狀態,並且電話號碼是這個奇怪的ComplexUriAndFormObject
的事情。這是從我的調試器複製粘貼觀看:
phoneRequest {ComplexUriAndFormObject.Models.PhoneRequest[1]}
[0] {ComplexUriAndFormObject.Models.PhoneRequest}
PhoneNumbers {ComplexUriAndFormObject.Models.PhoneNumber[1]}
[0] {ComplexUriAndFormObject.Models.PhoneNumber}
AreaCode null
Number null
State "UT"
是否有某種方法可以使用此格式正確指定此對象?還是我超越了模型綁定器中內置的ASP.NET Web API能夠執行的限制?
注意:請不要說「只是使用POST」或「只是使用JSON/XML /無論作爲您的內容類型」......如果我能做到這一點,我會的。
這正好解決了我的問題!謝謝,歡迎來到:) –