2014-08-28 3 views
1

에 나는 HTML 양식으로 정의 사용 닷넷 WebAPI 2 컨트롤러 각도 서비스 비아 양식 개체 :AngularJS와 포스트 HtmlForm는 .NET WebAPI2

$http.post('/api/UI', "=" + JSON.stringify(userForm)) 

WebAPI2에서 찾는 방법 [FromBody] 문자열 값을 취하고 이 양식은 userForm이 JSON 객체 대신 html 양식 객체 자체 대신 JSON 객체 일 때 작동하지만 어떤 이유로 든 html 양식 객체를 전달하는 경우 작동하지 않습니다.

비슷한 컨트롤러에 게시해야하는 양식이 많습니다. 양식 데이터 개체 자체를 조작하지 않아도 webapi2 컨트롤러에 html 양식 개체를 게시하는 비교적 쉬운 방법이 있습니까?

$http.post('/api/UI',userForm) 

을 내가 webapi2에 기사의 톤을 읽은하고 성공적으로 임의의 $를 제출하는 날 잡았어 : 또는, 더 명확하게, 나는 다음과 같이 호출 할 수 있도록 webapi2 포스트 방법을 준비하는 방법은 무엇입니까 위의 메서드를 사용하여 만든 scope.object ("="를 앞에 붙이고 json 개체를 문자열로 바꾸고 json/charset8의 contenttype 헤더를 변경 한 경우) 그러나 양식 자체를 제출할 수있는 것은 훨씬 더 깨끗해 보입니다. 그렇게하는 것을 선호 할 것입니다. 어쨌든 내가 어쨌든 그것을 stringify 후 왜 내가 HTML 양식 개체를 제출할 수 없는지 알고 싶습니다.

도움을 주시면 감사하겠습니다. 미리 감사드립니다!

답변

1

WebApi 프로젝트가 Global.asax에 구성되어 있으면 WebApiConfig이라는 클래스가 있습니다. 당신의 WebApi 직렬화/역 직렬화 JSON System.Net.Http.Formatting.JsonMediaTypeFormatter()

public static class WebApiConfig 
    { 
     public static void Register(HttpConfiguration config) 
     { 
      //... 

      System.Web.Http.GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 
      config.Formatters.Insert(0, new System.Net.Http.Formatting.JsonMediaTypeFormatter()); 
      config.Formatters.Insert(0, new System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter()); 


      config.EnableSystemDiagnosticsTracing(); 
     } 
    } 

할 경우 JSON 포매터는 이후 = 기호를 추가 할 필요가 없습니다 목록의 첫 번째 항목 인 경우가 당신이 말하는 "미디어 포매터"를 찾을 것입니다 JSON이 기본 디시리얼라이저가됩니다.

+0

JSON이 기본값이 될 것이라고 포매터 목록에서 xml 유형을 제거했다면 생각했습니다. 그것이 나타나는 것처럼, 이것은 사실이 아닙니다. 필자는 JSON 포맷터를 명시 적으로 나열한 것으로 변경했으며 이제는 원하는 모든 방식으로 작동합니다. 고맙습니다! – JakeHova