[英]Angular - Pass array with http post
我試圖通過json傳遞一個json數組和一個值。 該值已傳遞,但數組未傳遞。 在javascript控制器中,responseList的值是:“ [{{correct”:“ false”,“ answer”:“ a1”},{“ correct”:true,“ answer”:“ a2”}]“”
JavaScript控制器
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");
}
}
模型
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);
}
}
angular.toJson(responses)
序列化為字符串而不是對象。 你應該做
responsesList: responses
為了映射到列表,來自json的對象必須是一個數組。
因此,如果您在下面進行更改
var responsesList = {'object':jsonData};;
像這樣:
var responsesList = [{'correct':true,'answer':'Meow'}, {'correct':true,'answer':'Woof'}];
它會工作。
我假設您從responses
獲得普通數組( []
),而不是字符串值( "[]"
)內的數組。 嘗試這個:
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) {
});
}
您可能必須在后端解析該字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.