Отправка данных с помощью XMLHttpReques не возвращает значение json - PullRequest
0 голосов
/ 22 мая 2019

Я публикую данные от XMLHttpRequest до controller.Я прохожу только string со значением "1".Когда я проверяю запрос с Fiddler все в порядке.Есть JSON rara=1.Запросите соединение с методом в контроллере, но там rara есть null.

Ниже код от js:

StopThreadHandlerBase.prototype.sendInterruption = function (number, path) {
    var xhr = new XMLHttpRequest();
    xhr.open("POST", path, false);
    xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');
    xhr.onreadystatechange = function () {
        if (xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
            var message = 'Thread Stopped';
            if (number === 3) {
                message = message + ', Asset sold';
            }

            if (number === 5) {
                message = message + ', Asset bought';
            }

            alert(message);
            window.location.href = "/WebApplication2/Home/NewOrder";
        }
        else {
            alert('Request failed.  Returned status of ' + xhr.status);
        }
    };
    xhr.send(JSON.stringify({ rara: number }));
}

Код от контроллера:

public void InterruptFirstThreadFastConditionService(string rara)
{
  var interruptionType = JsonConvert.DeserializeObject<EnumInterruption>(rara);
  _fastConditionServiceHelper.setStopFirstThread(interruptionType);
}

Я упоминаю, что я пытался с тегами HttpPost, HttpGet, AllowAnnonymous, но это не работает.Более того, я попробовал то же самое в .net Framework, и это сработало.То же самое не работает в ядре .net.

Пожалуйста, посмотрите на картинку.Существует значение rara со значением 1, но оно не связано с аргументом метода.

enter image description here

1 Ответ

1 голос
/ 23 мая 2019

Вы отправляете объект из JavaScript, поэтому вы должны создать класс модели представления на стороне сервера, что-то вроде этого:

public class MyViewModel
{
    public string Rara { get; set; }
}

И вы можете использовать его в контроллере следующим образом:

public void InterruptFirstThreadFastConditionService([FromBody] MyViewModel model)
{
  var interruptionType = JsonConvert.DeserializeObject<EnumInterruption>(model.Rara);
  _fastConditionServiceHelper.setStopFirstThread(interruptionType);
}
...