+ как передавать данные из ajax в контроллер mvc 5 - PullRequest
1 голос
/ 17 мая 2019

У меня есть представление, которое имеет форму HTML.Эта форма отправляет данные в две сущности. Первая сущность находится во взаимосвязи «один ко многим» с другой.

Эта форма имеет HTML-таблицу, в которую пользователь может добавить столько строк, сколько необходимо.Затем при отправке формы данные формы будут опубликованы в entity1, а данные, вставленные в HTML-таблицу, должны быть собраны и добавлены в entity2, который имеет отношение многие-к-одному с entity1.

Я собрал данные, вставленные пользователем в html-таблицу, в виде массива объектов js и попытался отправить их как ajax для публикации действия в контроллере при отправке формы.

У меня возникла ошибка:

[Обязательное поле формы защиты от подделки "__RequestVerificationToken" отсутствует]

Поэтому я передал токен в заголовке и добавил фильтр авторизации для публикации данных действия, отправленных из ajax, не равен NULL,но он получен в контроллере как ноль.

Как я могу решить эту проблему?

enter image description here

    cols.push("DIGITAL_FILE_TYPE_ID");
                    cols.push("DOCUMENT_LAPI_ID");

                    var digitalMapRows = [];
                    $("table#digital-map-table tbody tr").each(function () {
                        data = {};

                        var selectedDigitalMapVal = 
  $(this).data("selectedDigitalMapVal");
                        data[cols[0]] = selectedDigitalMapVal;
                        var documentId = $(this).data("documentID");
                        data[cols[1]] = documentId.toString();
                        digitalMapRows.push(data);
                        data = {};

                    });

                    var headers = { __RequestVerificationToken: $('input[name="__RequestVerificationToken"]').val() };

                    if (digitalMapRows != null) {
                        $.ajax({
                            headers: headers,
                            url: "@Url.Action("Initiate")",
                            type: "POST",
                            cache: false,
                            data: JSON.stringify(digitalMapRows),
                            dataType: "json",
                            success: function (succ) {
                                console.log(succ);
                            },
                            error: function (err) {
                                console.log(err.statusText);
                            }
                        });
                    }

И это публикация, которую я отправляю из ajax.Должны ли мои данные быть включены в viewmodel, а не в отдельный аргумент?Следовательно, данные, переданные в этом аргументе, будут заполнены не во всех случаях.

           [HttpPost]
           //[ValidateAntiForgeryToken]
           [ValidateHeaderAntiForgeryToken]
           public ActionResult Initiate(SODViewModel vm, 
                 IEnumerable<DIGITAL_MAPS> digitalMapRows)
           {
                 //digitalMapRows returns as null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...