2017-01-10 15 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

以下のエラーコードで確認してください。

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)を試しました。私は以前これを使って、コメントしました。理想的には、これはこのようにすべきです。しかし、コントローラーのpublic JsonResult CreateAssessment(List items)では0になります。データはありません – user1109270

0

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

} 

、それはこのように起こるが、それは私が何をしたかのように働いた私はなぜわかりません。

関連する問題