отправка данных контроллеру из Jquery. MVC C#

#javascript #c# #json #ajax #asp.net-mvc

#javascript #c# #json #ajax #asp.net-mvc

Вопрос:

в моей части кода скрипта jquery скрипт работает нормально и устанавливает массив данных / объект в dataBLL..

 var dataBLL = [];
$('#mytable tr').each(function (i) {

dataBLL.push({

id: $(this).find('td:eq(0)').text(),
ctype: $(this).find('td:eq(1)').text(),
cpath: $(this).find('td:eq(2)').text(),
ckey: $(this).find('td:eq(3)').text(),
ckey: $(this).find('td:eq(4) input:frist').val(),

});
  $.ajax ({
             url:"User/BllBtn",
             type:"POST",
             data:"dataBll="JSON.stringify(dataBLL);
             dataType: "json",
             success: function (e) {

                alert("sucess");
            }})
  

но я не могу отправить этот объект / массив на свой контроллер, чтобы использовать его данные и выполнять итерации по каждой записи строки.

Моя подпись контроллера

 [HttpPost]
public ActionResutl BllBtn(List<string> dataBll)
{

}
  

Пожалуйста, укажите, как получить этот объект в виде списка, чтобы я мог выполнить цикл самым простым способом.

Комментарии:

1. что делать дальше.. любое изменение кода, запрошенное @Div

2. получение null в списке<string> dataBll:( @Div

Ответ №1:

У вас синтаксическая ошибка (о которой вам сообщит консоль вашего браузера), а также вы создаете недопустимый JSON.

data: { "dataBll": dataBLL }

должно сработать, я думаю. Или

data: JSON.stringify({ "dataBll": dataBLL })

в худшем случае. Также установите

contentType: 'application/json; charset=UTF-8'

как еще одна опция в вызове ajax.

Следующая проблема заключается в том, что вы пытаетесь принять List<string> в свой метод, но dataBll это сложный объект со следующими свойствами:

id, ctype, cpath, ckey, ckey

Во-первых, вы не можете определить ckey дважды в одном и том же объекте, а во-вторых, ваш объект JSON несовместим с типом в методе C #. Вам нужно определить класс, например

 public class myNewType
{
  public string id {get; set; }
  public string ctype {get; set; }
  public string cpath {get; set; }
  public string ckey {get; set; }
}
  

а затем принять List<myNewType> в качестве параметра метода:

 public ActionResult BllBtn(List<myNewType> dataBll)
  

Комментарии:

1. пожалуйста, помогите, как создать допустимый JSON .. любой пример кода! @ADyson

2. нет, я не получаю никаких данных в своем действии, считаю только 1 в индексе [0] с именами ключей и больше ничего:(

3. любой другой метод, который вы знаете, если он работает, я буду следовать этому @ADyson

4. Его data: JSON.stringify({ "dataBll": dataBLL }), и вам также необходимо установить contentType: 'application/json; charset=UTF-8',

5. Сделано, но опять же, как получить значение в controller ActionResult BllBtn:( @StephenMuecke