2017-10-26 2 views
1

양식 데이터 (예 : FormDataAttribute)에서 모델 바인딩을 지원할 수있는 웹 API 확장에 대한 도움을 얻거나이를 달성하는 방법에 대한 커뮤니티의 지침을 찾으십시오.FormData를 웹 API로 읽는 방법?

public class NammaApiController : ApiController 
{ 
    public IHttpActionResult PostFDFromBody([FromBody]FD reqBody) 
    { 

     return Ok(); 
    } 

    public IHttpActionResult PostFDFromFormData([FromFormData]FD reqBody) 
    { 

     return Ok(); 
    } 
} 

기본 웹 API 모델 바인더는 불행히도 원시 입력에서만 작동합니다.

enter image description here

답변

1

는 최근

[HttpPost] 
[Route("search")] 
public IHttpActionResult Search(System.Net.Http.Formatting.FormDataCollection search) 

그런 다음이 FormDataCollection 변환하는 FormDataCollection 클래스의 확장 메서드를 만들 같은 시나리오는, 컨트롤러에서, 컨트롤러 클래스에서이 메소드 서명을 사용하는 일종의했다 NameValueCollection에 쉽게 추가 할 수 있습니다. 하나는 것을 제출 될 수 있지만 단지 내가 그것을 테스트하기 위해 두 개의 키를 전달하는 시도

public SearchQeury(NameValueCollection formdata) : base(formdata) 
{ 
      FirstName = formdata["FirstName"];  
      ... 

} 
+0

감사 : 그런 다음

public static NameValueCollection Convert(this FormDataCollection formDataCollection) { IEnumerator<KeyValuePair<string, string>> pairs = formDataCollection.GetEnumerator(); NameValueCollection collection = new NameValueCollection(); while (pairs.MoveNext()) { KeyValuePair<string, string> pair = pairs.Current; collection.Add(pair.Key, pair.Value); } return collection; } 

당신은 NameValueCollection은이 다음 수업 시간에, 같은 생성자를 만들 또한 API에서 검색된 값이 이상했습니다. ------'WebKitFormBoundaryYeK7GSBvc3k6tR1n \ r \ nContent-Disposition : form-data; name' – Abhijeet

+0

이 코드는 Form-Data가 아닌'x-www-form-urlencoded'에 적합한가? – Abhijeet

+1

제 코드에 x-www-form-urlencoded가 아닌 postdata가 사용되었지만이 링크를 확인할 수 있습니다 : https://weblog.west-wind.com/posts/2012/Aug/16/Mapping-UrlEncoded-POST -Values-in-ASPNET-Web-API와 나는 어쨌든 가능할 것이라고 생각한다. –

관련 문제