Звонок из просмотра
$.ajax({ URL: _urls.saveNoteDetailsUrl, тип: "ПОСТ", кеш: ложь, contentType: «приложение/json», данные: JSON.stringify(inputModel), успех: функция (ответ) { window.location.assign(_urls.ReturnToHomePageUrl); } Контроллер [*]Подход 1 [HttpPost] общедоступный IActionResult SaveNote (модель PNoteRequest) [*]Подход 2 [HttpPost] public IActionResult SaveNote ([FromBody] модель PNoteRequest) Подход1 получает модель, но все значения равны нулю Approach2 передает NULL для самой модели.
Та же конечная точка вызывается из другого представления, которое выдает ту же ошибку, если я использую подход 1, но работает нормально, если я использую подход 2. Структура inputModel немного отличается: в нерабочем вызове присутствуют дополнительные пары ключ-значение по сравнению с рабочим вызовом. Я убедился, что все ключи присутствуют в ViewModel.
Если я внесу следующие изменения, вызовы из обоих представлений будут работать
[*]Передайте inputModel, отбрасывая метод JSON.Stringify. [*]Удалите параметр contentType в вызове AJAX [*]Удалите тег [FromBody] из метода контроллера
но данные передаются как urlencoded, и это создает еще одну проблему, когда inputModel становится огромной. Поэтому мне нужно передать данные в формате JSON, а не в urlencoded.
Как исправить?
Спасибо за ваши ответы. Думаю, я не правильно объяснил суть вопроса. Есть два представления, выполняющие вызов AJAX POST к одной и той же конечной точке. Все работает нормально, если передаваемый объект не огромен. Если объект огромен, он передает NULL для модели в КОНТРОЛЛЕР. Чтобы исправить вышеуказанную проблему, я внес следующие изменения: 1) Добавлен [FromBody] в CONTROLLER. 2) Добавлен параметр contentType и JSON.Stringify() в вызов AJAX в VIEWS. Теперь вызов с одного из VIEW работает, а с другого нет. Другой вызов передает NULL для модели КОНТРОЛЛЕРУ
Я стараюсь предоставить как можно больше информации. Код в двух представлениях огромен: он объединяет значения с экрана для создания входной модели. Я проверял несколько раз, разница в вызовах AJAX заключается только в ключе NoteInfo.
Вот файл класса PNoteRequest. В классе PNoteRequest имеется около 30 других свойств.
публичный класс PNoteRequest { общественный ИНТ RequestId {получить; набор; } общественный NoteInfo NoteInfo {get; набор; } общественная строка RequestText {получить; набор; } публичная строка RecordNo {get; набор; } } В классе NoteInfo есть еще около 20 свойств.
публичный класс NoteInfo { общедоступная строка Title {get; набор; } общедоступная строка Описание {get; набор; } публичный логический тип? IsSAR {получить; набор; } общественный ИНТ MemoOverRideRecordNumber {получить; набор; } общественный bool IsToReplaceSAR {получить; набор; } публичный интервал? Регион {получить; набор; } общественная строка QISNo {получить; набор; } общественная строка RevisionComments {get; набор; } } Разница между вызовами из двух представлений находится в свойствах NotInfo
Запросить полезную нагрузку для работающего вызова
{"RequestId":4062, "NoteInfo":{"Title":"Сохранить проверку примечания для небольшого объекта JSON.", "Description":"Вызов AJAX для сохранения ПРИМЕЧАНИЕ и SAR.", «ИССАР»: false} } Запросить полезные данные для вызова, приостановившего NULL
{"RequestId":0, "NoteInfo":{"Title":"Сохранить проверку примечания для небольшого объекта JSON.", "Description":"Вызов AJAX для сохранения ПРИМЕЧАНИЕ и SAR.", «IsToReplaceSAR»: ложь, "MemoOverRideRecordNumber":"", "Комментарии к редакции":"", "Область":"", "QISНет":""} }
Вызов AJAX POST к контроллеру передает NULL ⇐ Jquery
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Веб-API ASP.NET Core 8 + вызов Ajax к контроллеру: полностью отключить Cors
Anonymous » » в форуме C# - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-