Передача логического значения в api-контроллер asp.net через Ajax

Я пытаюсь передать один boolean значение через ajax к server API, Действие API выполняется, но параметр (перемешанный) falseхотя я устанавливаю его в true через Ajax,

Действие контроллера API это:

[HttpPost("PostShuffled")]
public IActionResult PostShuffled([FromBody]bool shuffled)
{
    userSession.Shuffled = shuffled;
    return Ok();
}

Мой Ajax-вызов такой:

function ChangeViewMode(el) {
    if (el.id == "ViewShuffled") {
        $.ajax({
            url: "/api/Data/PostShuffled",
            contentType: "application/json",
            method: "POST",
            data: JSON.stringify({ shuffled: true }),
            success: function () { alert("ok"); }
        });
    }
}

У меня вопрос, что я делаю не так?

2 ответа

Хорошо, я решил проблему следующим образом:

Определен новый класс:

 public class AjaxShuffled
    {
        public bool shuffled { get; set; }
    }

Затем в моем контроллере изменилось:

[HttpPost("PostShuffled")]
    public IActionResult PostShuffled([FromBody]AjaxShuffled s)
    {
        userSession.Shuffled = s.shuffled;
        return Ok();
    }

И теперь значение передается правильно. Я должен был заключить логическое значение в класс, чтобы он работал.

Проблема в том, что shuffledзаворачивается в объект, а не отправляется сам по себе. Если вы хотите отправить только логическое значение, просто отправьте trueили же falseсам: data: trueили же data: JSON.stringify(true)в зависимости от того, как вы настроили веб-службу для обработки входных форматов для логических значений. На стороне сервера вам нужен только дескриптор [FromBody] в параметре метода API.

Другие вопросы по тегам