2016-11-17 56 views
0

我想傳遞一個包含通行證JavaScript對象與HTTP POST

question(string), multianswers(answer(string),correct(bit)). 

這是一個JavaScript對象multianswers的價值 -

[{'correct':true,'answer':'A1'}, {'correct':true,'answer':'A2'}]; 

什麼類型應該是我傳遞的參數到控制器。

function setMultiQuestion(question, responses) { 

    var responsesList = angular.toJson(responses); 

    function questionAnswerObj(question, answers) 
    { 
     this.question = question; 
     this.answers = answers; 
    } 

    qaObject = new questionAnswerObj(question, responsesList); 

    $http.post(baseUrl + "Admin/insertMultiAnswers", { data: qaObject }) 
    .success(function (data, status, headers, config) { 

     $mdDialog.hide(); 
     $mdToast.show(
     $mdToast.simple() 
    .textContent('New question was added.') 
    .position('top') 
    .hideDelay(5000) 
    .theme('success-toast') 
    ); 
    }) 
    .error(function (data, status, header, config) { 
    }); 
} 

而這是我的控制器。

[HttpPost] 
    public ActionResult insertMultiAnswers(object data) 
    { 
     try 
     { 
      Console.Write(data); 
      // data.setMultiAnswer(); 
      Response.StatusCode = 200; 
      return Content("Sucess"); 
     } 
     catch (Exception ex) 
     { 
      Response.StatusCode = 500; 
      return Content("Fail"); 
     } 
    } 
+0

你使用任何類相同? – Aravind

回答

1

什麼類型應該是我傳遞給控制器​​的參數。

string[] data 

這是由於[{'correct':true,'answer':'A1'}, {'correct':true,'answer':'A2'}];。括號表示數組。 {}的意思是對象。所以你的數組由包含值的對象組成。

爲了進一步處理控制器中的數組,我建議看看這些例子。 http://sarangasl.blogspot.nl/2014/01/pass-complex-javascript-object-to-mvc.html

例如,您可以創建一個包含bool正確和字符串答案的類,並將控制器數組中的對象轉換爲此類。這使得以後可以很容易地使用它們。這簡化了這一過程的一個插件的例子是Deserializing JSON to .NET object using Newtonsoft (or LINQ to JSON maybe?)

編輯:

不知道你的函數做什麼,但它不返回任何東西。嘗試將其更改爲:

function questionAnswerObj(question, answers) 
{ 
    var object = { 
        question: question, 
        answers: answers 
       } 
    return object; 
} 

var object = {}創建一個新對象。有意義的是,由於函數不返回任何內容,這與空值相同,因此控制器中的參數爲null。如果應用這些更改,則必須將控制器中的參數類型替換爲字符串,因爲我們不是發送數組而是發送對象。

+0

謝謝。但對象包含 - 問題(字符串)+ json數組(correctAns(位),答案(字符串)) – user6934713

+0

我遵循你的建議,並改變我的代碼:public ActionResult insertMultiAnswers(string [] data)。但仍然無效。我沒有改變JavaScript控制器中的任何東西。 – user6934713

+0

功能questionAnswerObj(問題,答案) { this.question = question; this.answers =答案; } – Devilscomrade