Nano Hash - криптовалюты, майнинг, программирование

Пост-запрос Ajax всегда передает нулевой объект в контроллер MVC

Я пытаюсь использовать сообщение JQuery ajax для вызова контроллера ядра ASP.Net. Я перепробовал все разные сценарии, но ни один из них не работает. Вот моя функция Javascript:

   $("#verify-answer").click(function () {

        if ($("#question_answer").val() != "") {
            var request = JSON.stringify({
                'Answer': $('#question_answer').val(),
                'UserId': 1,
                'TenantId': 0
            });

            $.ajax({
                url: "/Account/PasswordRecoveryChallengResponseGetToken",
                type: "POST",             
                contentType: 'application/json',
                data: request,
                datatype: "json",
                success: function (result) {

                    console.log("answer token challenge: ");

                },
                error: function (result) {                      
                }
            });
        }

        return false;
    });

Частичный просмотр HTML:

 <div>
     <form>
         <p>Challenge-Response Option</p>
          <label for="username">Username</label>
          <input type="text" class="form-control" id="username_recovery">
          <button type="submit"  id="get-questions" onclick="return false;" >Retrieve Question</button>
      </form>
  </div>


 <div id="question">
    <div>                      
       <form>
            <div id="user_question"> </div>
            <label for="username">Answer</label>
            <input type="text" id="question_answer">
            <div  id="questions_answer_message"></div>
            <button type="submit"  id="verify-answer">Verify Answer</button>
        </form>
     /div>
  </div>

Это мой контроллер:

[HttpPost]
public async Task<IActionResult> PasswordRecoveryChallengResponseGetToken(ResetPasswordQuesionChallengeRequest request)
{

}

Пройдена модель:

public class ResetPasswordQuesionChallengeRequest : Core.TenantClientEntityBase
{

    [Required]
    public string Answer { get; set; }
}


 public abstract class TenantClientEntityBase
{
    [Required]
    public int TenantId { get; set; }

    [Required]
    public int UserId { get; set; }
}

Это данные запроса:

введите здесь описание изображения

Параметр запроса всегда имеет следующие значения:

  • Ответ = ноль
  • UserId = 0
  • TenantId = 0

Что я делаю неправильно?


  • Не могли бы вы проверить вкладку сети в инструментах разработчика (F12) и убедиться, что полезная нагрузка запроса соответствует ожиданиям? 05.12.2016
  • Это полезная нагрузка запроса: {Answer: "test", UserId: 1, TenantId: 0} 05.12.2016

Ответы:


1

Я обнаружил, что мне нужно добавлять [FromBody] во все свои POST-сообщения, иначе я столкнусь с той же проблемой.

e.g.

public async Task<IActionResult> PasswordRecoveryChallengResponseGetToken([FromBody] ResetPasswordQuesionChallengeRequest request)
05.12.2016
  • Спасибо! Вы знаете причину этого? 05.12.2016
  • Это может быть полезно, когда вы получаете данные из нескольких источников, например. 05.12.2016
  • например Обновите (идентификатор Guid, данные [FromBody] UpdateData), но я не уверен, почему он не принимает FromBody по умолчанию в POST ... 05.12.2016
  • @ holland1991: Одна из причин может заключаться в том, что WebAPI и MVC были объединены в одну единую структуру. Раньше MVC и WebApi наследовались от разных базовых классов. Теперь, когда есть только один класс (или его нет вообще), есть два основных способа передать модель контроллеру: json / xml (типично для WebApi) в теле или запрос формы (типичный для MVC). 05.12.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..