Как: (а) отправить JSON данных из браузера в контроллер; и (b) отправить преобразованные данные на SQL Сервер в ASP. NET MVC? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть форма, которая включает в себя множество элементов <input> и использует таблицы табулятора от 1 до n для ввода данных. Мне удалось успешно собрать данные из этих элементов в строку JSON. Сейчас я пытаюсь выполнить следующие два шага:

  1. Используя Ajax, отправьте объект JSON на мой веб-сервер; и
  2. В контроллере ASP. NET MVC загрузите десериализованные JSON данные в таблицу SQL Server 2016.

Моя клиентская сторона скрипт для POST объекта JSON выглядит следующим образом:

var myJson = "the data from the form elements is programmatically inserted into the JSON string";

// use parseJSON() to test the syntax
try {
    var obj = jQuery.parseJSON(myJson);
}
catch(error) {
    console.log(error);
}
$.ajax({
        type: "POST",
        url: "/Dailies/UploadJson/",
        dataType: 'json',
        data: JSON.stringify(myJson),
        contentType: 'application/json',
        crossDomain: true,
        cache: false,
        success: function(data) { console.log(data); }
});

Метод, вызываемый в моем ASP. NET MVC контроллере, выглядит следующим образом:

[HttpPost]
public IActionResult UploadJson(Object jsonFile)
{
    // insert data into SQL Server table
}

Примечание. Я уже создал соответствующую модель предметной области в своем приложении ASP. NET MVC, а также добавил ссылку DbSet на модель DbContext. Я проверил свою способность вставлять строки в таблицу SQL Server, используя фиктивные данные.

Когда я помещаю точку останова внутри метода UploadJson(), я обнаруживаю, что объект jsonFile имеет значение null.

Мой кван dry на данный момент двоякий:

  1. Кажется, я не могу получить данные JSON от клиента на веб-сервер; и
  2. Мне нужно лучше понять, как преобразовать данные JSON (однажды полученные) для загрузки в мою базу данных.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 05 мая 2020

Хотя существует множество вопросов , связанных с этим, ответы на них обычно относятся к привязке к модели, а не только к строке json. Но это также поможет вам.

Похоже, есть две вещи:

  1. Я бы изменил контроллер, чтобы он получал string вместо объекта.
  2. Вам необходимо обновить json данные, которые вы передаете контроллеру, чтобы они соответствовали имени параметра контроллера. Таким образом, в этом случае контроллер получит параметр с именем jsonFile. Итак, в методе $.ajax вы захотите обновить data до чего-то вроде:
data: { jsonFile: JSON.stringify(myJson) }

UPDATE:

удалить Content-Type из application/json
...