2016-06-27 4 views
0

私はMVC Webアプリケーションを開発する初心者です。私は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); 

ボタンの機能を公開:

​​

しかし、リストSurveyViewModelはnullです。 SurveyViewModelのリストがコントローラに渡されない理由

誰かが私を助けることができますか?

+0

を助けている場合、その後、すべてのオープンやコード、 マークの答えの中括弧のCLOSEするをチェックし

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 }); }); 

を探して何だと思います'contentType: 'json''が必要で、データをストリング化する必要があります。しかし、正しく表示された場合は必要ありません。必要なのは 'data:$( 'form')です。serialize()、' –

+0

私はcontentTypeを変更し、データを文字列化しました。それは正しく動作します。ありがとうございました ! – Mesut

答えて

0

私は、これはウルが受け入れとしてあなたが手動でオブジェクトを作成する場合は、U

+0

あなたのコードを試しました。しかし、SurveyViewModelはまだnullです。コンソールにログオンすると、オブジェクト{SurveyTitle: "value"、SurveyViewModel:Array [1]} – Mesut

関連する問題