2016-03-30 2 views
2

Мне нужно передать список строк из нескольких выбранных контроллеров. Хотя требование выглядело очень просто для меня, я в это время ломал голову. Я провел справедливое исследование по этому вопросу, но не смог добиться успеха.Передача строкового массива в контроллеры mvc с использованием ajax

Ниже мой код Javascript. Пожалуйста, проигнорируйте комментарии. Я успешно смог получить список элементов в множественном выборе. В то время как я делаю вызов Ajax, я получаю объект ссылки ошибка»не установлен экземпляр объекта.

function submitForm() { 
    var selected = $('#selectedTasks option').map(function(){ 
     return this.value 
    }).get() 
    var postData = { selectedTasks : selected } //corrected as suggested 

    //selectedTasks = JSON.stringify({ 'selectedTasks': selected }); 
    alert(postData); 

    $.ajax({ 
     type: "POST", 
     //contentType: 'application/json; charset=utf-8', 
     url: '@Url.Action("AssignTasks", "MonthEndApp")', 
     dataType: 'json', 
     data: postData, 
     traditional: true, 
     success: function (data) {     
      alert("Success"); 
     }, 
     error: function (xhr) {      
      alert(xhr.responseText); 
     } 
    }); 
} 

MonthEndAppController.cs

[HttpPost] 
public void AssignTasks(List<String> selectedTasks) 
{ 
    //do something 
} 

Может кто-то наставит меня, где именно я не так? Может кто-нибудь подскажет мне, что не так?

EDIT: Как предложил г-н Рори, я сделал изменения скрипта java. Теперь часть скрипта Java работает абсолютно нормально, но контроллер не вызывается, когда выполняется запрос ajax Может ли кто-нибудь помочь мне, если что-то не так? n вызов, сделанный контроллеру?

ответ

1

Вы пытались с string[] вместо List<String>?

1

Параметр ваш AssignTasks действие ожидает называется selectedTasks, не values:

var postData = { selectedTasks: selected }; 

Также обратите внимание, что при отладке что-либо в JS вы всегда должны использовать console.log() над alert(), так как последний принуждают всех типов в строку , что означает, что вы не видите истинного представления фактического значения.

+0

Благодарим за предложение. Это была полная ошибка на моей стороне. Спасибо, что указали это. Он действительно работал (часть javascript). Но контроль не перемещается к контроллеру, а отлаживается. Он просто отображает предупреждение «Успех», но не знает, почему управление не перемещается. Вы видите какие-либо проблемы с контроллером? – user3173346

+0

@ user3173346 вместо [httppost] try [webmethod]? – codemonkeyliketab

Смежные вопросы