Передача логического значения в 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.