У меня есть вызов POST Ajax с FormData с параметрами и файлами.
При отладке вызова он никогда не достигает ни ошибки, ни успеха, и он не достигает контроллера.
FormData содержит структуру с объектом, отображаемым как 'RegisterMerchantInput'
Задано как глобальное:
const fdata = new FormData();
Звоните:
var content = {
businessName: $('#business-id').val(),
(...)
};
buildFormData(content);
$.ajax({
type: 'POST',
url: '/Owners/savemerchant',
contentType: false,
processData: false,
cache: false,
data: fdata,
success: function () {
window.location.href = "../Stores/StoresList";
},
error: function (err) {
window.location.href = "../Home/Error";
}
});
Для построения данных формы:
function buildFormData(data, parentKey) {
if (data && typeof data === 'object' && !(data instanceof Date) && !(data instanceof File)) {
Object.keys(data).forEach(key => {
buildFormData(data[key], parentKey ? `${parentKey}[${key}]` : key);
});
} else {
const value = data == null ? '' : data;
fdata.append(parentKey, value);
}
}
В контроллере:
[HttpPost]
[Route("savemerchant")]
public async Task<IActionResult> SaveMerchant(RegisterMerchantInput model){...}
Теперь я попытался указать [FromBody] и [FromForm].
Я пробовал с
- асинхронный: ложный
- contentType: не определено
и различные комбинации этих параметров.
Звонок как в ожидании в никуда ...
ПРИМЕЧАНИЕ: в FormData также есть файлы, поэтому я не могу сериализовать их в JSON
EDIT:
Запрос:
![enter image description here](https://i.stack.imgur.com/AM4of.png)
Сроки:
![enter image description here](https://i.stack.imgur.com/yK5Zt.png)
РЕДАКТИРОВАТЬ 2:
Зарегистрированные данные формы для отправки (обратите внимание, что все данные глупы, но правильно введены):
businessName: Tester Merchant
vatCode: a
debitorAccount: a
bicCode: a
currencyMandate: a
currencyMandateDate: 2000-01-01
commissionMandate: a
commissionMandateDate: 2000-01-01
city: Avigliano
postalCode: 85101
address: Via Vai 4
name: Bala
surname: Laika
telephone: a
email: bala@laika.com
password: Pa55word1!
country: IT
province: CZ
stores[0][banner]: b
stores[0][description]: b
stores[0][email]: b@b.b
stores[0][website]: b
stores[0][telephone]: b
stores[0][category]: b
stores[0][latitude]: 41.9022448
stores[0][longitude]: 12.456290099999933
stores[0][country]: IT
stores[0][province]: BA
stores[0][city]: b
stores[0][postalCode]: b
stores[0][address]: b
stores[0][terminals][0][store]: b
stores[0][terminals][0][model]: c
stores[0][terminals][0][concept]: c
stores[0][terminals][0][externalCode]: c
stores[0][logo]: (binary)
Размер изображения составляет 2438 байт.
Через десять минут мой компьютер вылетает со 100% заполнением диска