2016-11-16 5 views
0

http投稿でjson配列と値を渡そうとしています。値は渡されましたが、配列は渡されませんでした。 javascriptコントローラのrespondListの値は、 "[{" correct ":" false "、" answer ":" a1 "}、{" correct ":true、" answer ":" a2 "}]"httpポストを持つ角型配列

ジャバスクリプト制御

function setMultiQuestion(question, responses) 
{ 

var jsonData = angular.toJson(responses); 
var responsesList = {'object':jsonData};; 

$http.post(baseUrl + "Admin/insertMultiAnswers", { question: question, responsesList: responsesList }) 
.success(function (data, status, headers, config) { 
}) 
.error(function (data, status, header, config) { 
}); 
} 

MVCコントローラ

[HttpPost] 
public ActionResult insertMultiAnswers(MultiChoiceQuestionModel model) 
{ 
try 
{ 
    model.setMultiAnswer(); 
    Response.StatusCode = 200; 
    return Content("Sucess"); 
} 
catch (Exception ex) 
{ 
    Response.StatusCode = 500; 
    return Content("Fail"); 
} 
} 

MODEL

public class answerObj 
{ 
public bool correct { get; set; } 
public string answer { get; set; } 
} 

public class MultiChoiceQuestionModel 
{ 
public string question { get; set; } 
public List<answerObj> responsesList = new List<answerObj>(); 



public void setMultiAnswer() 
{ 
using (ATLASEntities atlasEntity = new ATLASEntities()) 
{ 
    Console.Write(responsesList.Count); 
} 
} 
+0

なぜあなたはこれをやっていますか? 'var respondList = {'object':jsonData} ;;'? –

+0

jsで参照しているメソッド 'insertMultiAnswers'はどこにありますか? –

+0

2つのうちの1つを行うことができます.Jsonオブジェクトとして保持し、FromBody属性をエンドポイントに追加するか、json.stringify()を使用してjson文字列に変換し、エンドポイントにできる文字列として取り込みますそれをオブジェクトにシリアル化し直します。私は最初の方法を好む。 – jbrown

答えて

0
angular.toJson(responses) 

は、オブジェクトではなく文字列にシリアル化されます。 あなただけのJSONからオブジェクトが配列である必要があり、リストにマッピングするために

responsesList: responses 
+0

ありがとうございます。もともと私はそれをしました。それは動作しません – user6934713

0

を行う必要があります。だから、

、あなたのような何かに

var responsesList = {'object':jsonData};; 

の下に変更する場合:

var responsesList = [{'correct':true,'answer':'Meow'}, {'correct':true,'answer':'Woof'}]; 

それは動作します。

+0

私はまったく同じjsonを持っているが、仕事をしていない – user6934713

0

普通の配列([])がresponsesから得られ、配列には文字列値(0​​)が含まれていないと仮定します。これを試してください:

function setMultiQuestion(question, responses){ 

    var myObj = {}; 
    myObj = JSON.stringify({question: question, responsesList: responses}); 

    $http.post(baseUrl + "Admin/insertMultiAnswers", myObj) 
    .success(function (data, status, headers, config) { 
    }) 
    .error(function (data, status, header, config) { 
    }); 
} 

バックエンドでその文字列を解析する必要があるかもしれません。

関連する問題