2014-11-12 1 views
1

좋아요, 그래서 여기에 내가있는 곳이 있습니다.개체의 배열을 게시 할 수 없습니다.

.NET WebAPI (C#)에 배열을 보내는 코드가 있습니다.

var questions = []; 
$('#questions').find('input').each(function(){ 
    var text = $(this).val(); 
    questions.push({ ID: 123, Question: text }); 
}); 

$.ajax({ 
    type: 'POST', 
    url: _apiPath + '/main/savequestions', 
    data: { "" : questions } 
}).done(function(data){ 
    alert(JSON.stringify(data)); 
}); 

그래서 나는 .NET 웹 API는 배열과 혼동 도착하고 속성 이름으로 ""로 데이터를 보내야 할 이유 알려진 버그가 있음을 다시 잠시에 배웠습니다. 우리가 바탕 화면에있는 경우

[Route("main/savequestions")] 
    [HttpPost] 
    public List<Question> SaveQuestions(List<Question> questions) 
    { 
    using (var mc = new MyContext()) 
     { 
      List<Question> list = new List<Question>(); 

      if (questions != null) 
      { 
       foreach (var item in questions) 
       { 
         var dbQ = new Question(); 
         dbQ.ID = Guid.NewGuid(); 
         dbQ.ToolID = item.ID; 
         dbQ.Question = item.Question; 
         mc.Questions.Add(dbQ); 

         list.Add(dbQ); 
       } 
      } 

      mc.SaveChanges(); 

      return list; 
     } 
} 

이 잘 작동 :

여기 내 웹 API를 컨트롤러입니다. 모든 것이 절약됩니다 ... 작품 ... 굉장합니다.

우리는 PhoneGap을 사용하고 있으며이 코드를 실행하는 앱을 에뮬레이션하기 위해 phonegap 앱을 사용할 때 어떤 데이터도 저장하지 않습니다. 우리가 보내고있는 JSON이 똑같은지 확인하고 확인했습니다 ...하지만 컨트롤러를 실행할 때 컨트롤러는 빈 배열을 가져 오는 것으로 보이므로 아무 것도 저장하지 않습니다.

불일치로 나를 태우게됩니다.

도움말!

데이비드

답변

1

는 다음을 시도해보십시오

  1. 구체적 JSON로 jQuery를 AJAX 통화에서 "contentType이"로 설정하십시오. jQuery는 'application/x-www-form-urlencoded; charset = UTF-8 '입니다.
  2. JSON.stringify이 바인딩 모델 중 JSON MediaTypeFormatter를 사용하는 WebAPI를 말할 것이다

배열 : http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

잘 모르겠어요 왜하지 않는 한 데스크톱과 모바일 브라우저 사이의 불일치 데스크톱 브라우저 또는 jQuery는 "데이터"를 다르게 처리합니다.

$.ajax({ 
    type: 'POST', 
    url: _apiPath + '/main/savequestions', 
    contentType: 'application/json; charset=utf-8', 
    data: JSON.stringify(questions) 
}).done(function(data){ 
    alert(JSON.stringify(data)); 
}); 
+0

트릭을하는 것처럼 보였습니다 ... 와아. 얼마나 무작위인지. 정말 고마워! – David

관련 문제