2017-01-10 37 views
0

我想通過集合到JSON對象到MVC行動。提供在谷歌幾乎所有的我都試過的解決方案,它沒有數據傳遞到行動,請讓我知道我錯過了什麼:傳遞JSON到ASP.Net MVC動作

AJAX請求

var data = []; 
var questID = 100; 
data.push({ QuestionTypeId: '2', QuestionId: questID, Answer: 'asdff' }); 
data.push({ QuestionTypeId: '2', QuestionId: questID, Answer: 'asdff' }); 
data.push({ QuestionTypeId: '2', QuestionId: questID, Answer: 'asdff' }); 
data.push({ QuestionTypeId: '2', QuestionId: questID, Answer: 'asdff' }); 

//var items = JSON.stringify(data); 
//alert(items); 
var items = JSON.stringify({ 'items': data }); 
alert(items); 

$.ajax({ 
url: '/Dashboard/CreateAssessment', 
data: items, 
type: 'POST', 
contentType: "application/json; charset=utf-8", 
dataType: 'json', 
traditional: true, 
success: function (response) { 
if (response.success) { 
    swal('Password Changed', response.Message, 'success'); 
         window.location.href = "/Account/Management"; 
        } else { 
         $("update-password").removeAttr("disabled"); 
         swal('Error', response.Message, 'error'); 
        } 
       }, 
       error: function (response) { 
        $("update-password").removeAttr("disabled"); 
       } 
      }); 

模型類

public class AssessmentQuestion 
{ 
    public int Id { get; set; } 
    public string Description { get; set; } 
    public int DisplayOrder { get; set; } 
    public string PreviousYearValue { get; set; } 
    public QuestionType QuestionType { get; set; } 
} 

控制器操作方法

// POST: /Dashboard/CreateAssessment 
[HttpPost] 
public JsonResult CreateAssessment(List<AssessmentAnswerModel> items) 
{ 
     var text = items; 
     return Json(new { success = true }); 
     // return null; 
     //return RedirectToAction("Thanks", "Account"); 
} 
+0

更改行'var items = JSON.stringify({'items':data});''var items = JSON.stringify(data);'它應該可以工作。 –

回答

1

請檢查帶有錯誤行標識的follwing代碼。

var data = []; 
var questID = 100; 
data.push({ QuestionTypeId: '2', QuestionId: questID, Answer: 'asdff' }); 
data.push({ QuestionTypeId: '2', QuestionId: questID, Answer: 'asdff' }); 
data.push({ QuestionTypeId: '2', QuestionId: questID, Answer: 'asdff' }); 
data.push({ QuestionTypeId: '2', QuestionId: questID, Answer: 'asdff' }); 

//var items = JSON.stringify(data); 
//alert(items); 


var items = JSON.stringify(data); // HERE IS THE ERROR 

alert(items); 

$.ajax({ 
url: '/Dashboard/CreateAssessment', 
data: items, 
type: 'POST', 
contentType: "application/json; charset=utf-8", 
dataType: 'json', 
traditional: true, 
success: function (response) { 
if (response.success) { 
    swal('Password Changed', response.Message, 'success'); 
         window.location.href = "/Account/Management"; 
        } else { 
         $("update-password").removeAttr("disabled"); 
         swal('Error', response.Message, 'error'); 
        } 
       }, 
       error: function (response) { 
        $("update-password").removeAttr("disabled"); 
       } 
      }); 

請重新檢查以區分大小寫考慮您的AssessmentAnswerModel

如果發現有用請標記爲答案。

+0

謝謝 - 我已經嘗試var items = JSON.stringify(data);我之前使用過,然後評論。理想情況下,它應該是這樣的。但在控制器公共JsonResult CreateAssessment(列表項目)它獲得0.沒有數據 – user1109270

0

在控制器,你需要選擇數據作爲數組例如

// POST: /Dashboard/CreateAssessment 
[HttpPost] 
public ActionResult CreateAssessment(AssessmentAnswerModel[] items) 
{ 
    var text = items; 
    return Json(new { success = true }); 

} 

我不知道爲什麼會發生這樣的,但它的工作就像我所做的。