Код: Выделить всё
[HttpPost]
[AllowAnonymous]
public JsonResult Test(TestRequestModel requestModel)
{
//do stuff
return Json(new { result.Success });
}
Код: Выделить всё
public class TestRequestModel
{
public string Email { get; set; } = string.Empty;
}
Во-первых, вот как я вызываю свой сервер:
Код: Выделить всё
function MyTestFunction() {
let parameters = {
Email: "test@test.com"
}
CallServer(function () {
//Do stuff
}, function () {
//Do other stuff
}, "/Home/Test", parameters)
}
Код: Выделить всё
function CallServer(resolve, reject, path, parameters) {
$.ajax({
type: "POST",
url: path,
data: AddAntiForgeryToken(parameters),
success: function (response) {
//do stuff
},
error: function (xhr) {
//do stuff
},
complete: function () {
//do more stuff
}
});
}
Код: Выделить всё
function CallServer(resolve, reject, path, parameters) {
let xhr = new XMLHttpRequest();
xhr.open("POST", path, true);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.setRequestHeader('RequestVerificationToken', GetMyToken());
xhr.onreadystatechange = function (e) {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200 || xhr.status === 201) {
//do stuff
}
else {
//do other stuff
}
}
};
xhr.send(JSON.stringify(parameters));
}
Кроме того, как я читал в Интернете и, надеюсь, понял правильно , но ajax использует XMLHttpRequest скрытно, верно?
Так почему же мне нужно добавить [FromBody] на свой контроллер, чтобы это работало? Есть ли способ изменить свой XMLHttpRequest, чтобы он не был нужен? Решение, которое я ищу, как не указывать [FromBody] в запросе на отправку json на главный сервер .net.
Подробнее здесь: https://stackoverflow.com/questions/790 ... r-understa