this question에서 확장하여 복잡한 개체 컬렉션이 포함 된 복잡한 개체를 ASP.NET 웹 API 컨트롤러 동작 메서드에 전달하려고 시도하지만 요청에서 내 입력 개체에 사용할 올바른 형식을 찾는 데 문제가 있습니다. 크리스토퍼 존슨의 질문의 예를 계속 (및 simplicty에 대한 일부 필드를 제거) 내가 전화 번호의 컬렉션을 포함하도록 자신의 PhoneRequest
객체를 변경하는 경우, ...복잡한 형식의 배열을 포함하는 복잡한 형식을 웹 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
... 모든 것이 잘 작동합니다. 하지만 ... 새로운 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; }
}
을 PhoneNumbers
를 변경 ... 나는 이전 주어진 논리적 방법으로 나에게 보이는 것을에서 개체를 전달하는 경우 결과는 ...
id[0][State]=UT&id[0][PhoneNumbers][0][AreaCode]=555&id[0][PhoneNumbers][0][Number]=1234567
은 ... 또는 다시 HTML 폼 POST 본문 ...
[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 웹 API의 한계를 초과 했습니까?
참고 : "그냥 POST 사용"또는 "JSON/XML/무엇이든 콘텐츠 유형으로 사용"이라고 말하지 마십시오. 그렇게 할 수 있다면 그렇게 할 것입니다.
정확히 내 문제를 해결합니다! 고마워, 그리고 오신 것을 환영합니다 :) –