#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