2012-04-13 3 views
3

ASP.NET MVC3 컨트롤러를 사용하여 WP7 앱에서 다중 파트 양식 게시물을 수신하고 있습니다. 다음과 같이 포스트의 형식은 뭔가 :JSON을 ASP.NET 모델에 여러 부분으로 게시 할 수 없습니다.

{User Agent stuff} 
    Content-Type: multipart/form-data; boundary=8cdb3c15d07d36a 

    --8cdb3c15d07d36a 
    Content-Disposition: form-data; name="user" 
    Content-Type: application/json 

    {"UserName":"ashish","Password":"ashish"} 

    --8cdb3c15d07d36a-- 

을 그리고 같은 내 컨트롤러 보이는 : 내가보고하고하는 것은 사용자가 JSON에 바인딩 및 사용자 개체가 항상 널되지 않는 것입니다

public class User 
    { 
     public string UserName { get; set;} 
     public string Password { get; set; } 
    } 

    [HttpPost] 
    public JsonResult CreateFeed(User user) 
    { 
    } 

. 나는 사용자 문자열을 만들고 수동으로 DataContractJsonSerializer를 사용하여 User 클래스에 바인딩하고 객체를 만들고 할당하지만 왜 작동하지 않는지에 대해 당혹 스럽다.

non-multi-form 게시물을 사용해 보았는데 동일한 json에서 작동하는 것으로 나타났습니다. 어떤 도움을 주시면 감사하겠습니다.

내 게시물 : ASP.NET MVC. How to create Action method that accepts and multipart/form-data 및 HTTP 사양 http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2이 게시물을 보았습니다.

+0

테스트되지 않은 채찍 답 : 'name = "feedItem"'을'name = "user"'로 변경 하시겠습니까? – bhamlin

+0

사실 나는 이전에 사용자로 사용 했었습니다. 아직 운이 없다 : ( –

+0

DataContractJsonSerializer를 일반적으로 사용하지만 여기에 무슨 일이 일어 났는지는 확실치 않습니다. { "user": { "UserName"...} } –

답변

1

당신이 찾고있는 대답은 당신은 문자열로 읽어 내부적 것을 분석해야 here

입니다.

[HttpPost] 
public JsonResult CreateFeed() 
{ 
    StreamReader reader = new StreamReader(Request.InputStream); 
    string jsonResponse = reader.ReadToEnd(); 

    JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); 
    User user = jsonSerializer.Deserialize<User>(jsonResponse); 
} 
: 당신은 다음과 같은 것을 할 수있는 컨트롤러 액션 메소드와 연결하는 이름으로 당신이 좋은 유용한 내용 - 처리를하지 않은 경우

[HttpPost] 
public JsonResult CreateFeed(string jsonResponse) 
{ 
    JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); 
    User user = jsonSerializer.Deserialize<User>(jsonResponse); 
} 

을 또는 : 그래서 조치는 다음과 같을 것

이 접근법은 더 자세히 설명되어 있습니다. here

관련 문제