У меня есть представление, которое имеет форму HTML.Эта форма отправляет данные в две сущности. Первая сущность находится во взаимосвязи «один ко многим» с другой.
Эта форма имеет HTML-таблицу, в которую пользователь может добавить столько строк, сколько необходимо.Затем при отправке формы данные формы будут опубликованы в entity1
, а данные, вставленные в HTML-таблицу, должны быть собраны и добавлены в entity2
, который имеет отношение многие-к-одному с entity1
.
Я собрал данные, вставленные пользователем в html-таблицу, в виде массива объектов js и попытался отправить их как ajax для публикации действия в контроллере при отправке формы.
У меня возникла ошибка:
[Обязательное поле формы защиты от подделки "__RequestVerificationToken" отсутствует]
Поэтому я передал токен в заголовке и добавил фильтр авторизации для публикации данных действия, отправленных из ajax, не равен NULL,но он получен в контроллере как ноль.
Как я могу решить эту проблему?
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