2016-06-27 3 views
0

MVC 웹 응용 프로그램을 개발하는 데 초보자입니다. MVC에서 컨트롤러에 중첩 된 Json을 전달하려고 시도하지만 json 파일을 전달하는 데 문제가 있습니다.중첩 JSON을 MVC5의 컨트롤러에 전달하는 방법은 무엇입니까?

내 모델은 다음과 같습니다.

public class SurveyViewModels 
    { 
     public string Question { get; set; } 
     public bool IsMultipleChoice { get; set; } 
     public bool IsSelectOneMoreThan { get; set; } 
     public List<string> Options { get; set; } 
    } 

    public class SurveyItems 
    { 
     public string SurveyTitle { get; set; } 
     public List<SurveyViewModels> SurveyViewModel { get; set; } 
    } 

내 컨트롤러는 비슷합니다.

[HttpPost] 
    public JsonResult PostQuestionAndOptions(SurveyItems SurveyItems) 
    { 

    } 

추가 배열의 SurveyViewModels 클래스 :

 var SurveyViewModels= new Array();   
     $("#getButtonValue").click(function() { 
      ...... 
      var Options = new Array(); 
      for (i = 1 ; i < counter; i++) { 
       Options[i - 1] = $('#textbox' + i).val(); 
      } 
      var Data= { 
       "Question": Question, 
       "IsMultipleChoice": MultipleChoice, 
       "IsSelectOneMoreThan": SelectOneMoreThan, 
       "Options": Options 
      }; 
      SurveyViewModels.push(Data); 

이 버튼의 기능을 게시 :

$("#publishButton").click(function() { 
       var Title = $('#Title').val(); 
       var SendingData = { 
        "SurveyTitle": Title, 
        "SurveyViewModel": SurveyViewModels 
       }; 
       alert(Title); 
       alert(SurveyViewModels); 
       $.ajax({ 
        type: "POST", 
        url: "/Surveys/PostQuestionAndOptions", 
        data:SendingData, 
        success: function (data) { 
         alert(); 
        }, 
        dataType: "json", 
        traditional: true 
       }); 
      }); 

그러나 목록 SurveyViewModel은 null입니다. SurveyViewModel 목록이 컨트롤러로 전달되지 않는 이유

아무도 도와 줄 수 있습니까?

+0

을 도움이된다면 'contentType : 'json''이 필요하고 데이터를 문자열로 묶어야합니다. 그러나 올바르게 생성 한 경우에는 필요하지 않습니다. 필요한 것은'data : $ ('form')입니다. serialize(), ' –

+0

contentType을 변경하고 데이터를 문자열로 변경했습니다. 그것은 올바르게 작동합니다. 고맙습니다 ! – Mesut

답변

0

나는이 UR 체크인

var SurveyViewModels= new Array(); 
    $("#getButtonValue").click(function() { 
      ...... 
      var Options = new Array(); 
      for (i = 1 ; i < counter; i++) { 
       Options[i - 1] = $('#textbox' + i).val(); 
      } 
      var Data= { 
       "Question": Question, 
       "IsMultipleChoice": MultipleChoice, 
       "IsSelectOneMoreThan": SelectOneMoreThan, 
       "Options": Options 
      }; 
      SurveyViewModels.push(Data); 


$("#publishButton").click(function() { 
        var Titleobj = {"SurveyTitle": Title }; 

var SurveyViewModelsobj = {"SurveyViewModel":SurveyViewModels} 
        var SendingData = $.extend({}, Titleobj , SurveyViewModelsobj); 
        console.log(Title); 
        console.log(SurveyViewModels); 
        $.ajax({ 
         type: "POST", 
         url: "/Surveys/PostQuestionAndOptions", 
         data:SendingData, 
         success: function (data) { 
          alert(); 
         }, 
         dataType: "json", 
         traditional: true 
        }); 
       }); 

을 찾고 무엇을 생각하는 모든 당신이 다음 수동으로 객체를 구축하면 오픈 코드의 중괄호의 closeing, 접수로 마크 대답은 유에게

+0

나는 당신의 코드를 시도했다. 그러나 SurveyViewModel은 여전히 ​​null입니다. 콘솔에 로그온 할 때 객체 {SurveyTitle : "value", SurveyViewModel : Array [1]} – Mesut

관련 문제