Нулевой параметр - ASP контроллер - PullRequest
3 голосов
/ 04 мая 2020

Я отправил XmlRequest с родным JavaScript своему контроллеру, но он не принимает тело запроса в качестве параметра. Т.е. он читает его как null, даже если параметр должен быть строкой.

Запрос:

request.open("POST", "https://localhost:44328/CommodityTypes/PostData");
//request.setRequestHeader('Content-type', 'text'); // maybe that makes the problem?
request.send("Message");

Контроллер:

[HttpPost]       
public string PostData(string Text)
{
  return JsonSerializer.Serialize(Text);
}

Буду рад получить любой совет по этому поводу.


После того, как я углубился в бизнес, я обнаружил, что можно указать 'object' в качестве параметра для анализа (атрибут '[FromBody]' остается) , получая любопытный объект, который выдает сообщение JSON, вызывающее метод ToString (). Если у вас переменная или неравномерная структура входящих JSON, вы можете использовать этот подход.

Хотя должен быть какой-то другой способ решения проблемы.

Ответы [ 2 ]

3 голосов
/ 05 мая 2020

Вы можете создать объект data = { "text": "YourText" } и отправить JSON.stringify(data)

И нужно установить заголовок xmlhttp.setRequestHeader('Content-Type', 'application/json');

var uri = '/CommodityTypes/PostData';
var xmlhttp;
xmlhttp = new XMLHttpRequest();

var data = { "text": "YourText"  };

var sendstr = JSON.stringify(data);

xmlhttp.open("POST", uri, true);
xmlhttp.setRequestHeader('Content-Type', 'application/json');
xmlhttp.send(sendstr);

xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        alert(xmlhttp.responseText);
}
2 голосов
/ 05 мая 2020

в POST вы должны отправить текстовый параметр как FormData, чтобы его можно было распознать и сопоставить с помощью метода

var data = new FormData();
data.append("Text", "test");

var xhr = new XMLHttpRequest(); 

xhr.addEventListener("readystatechange", function() {
  if(this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://localhost:44328/CommodityTypes/PostData");
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

xhr.send(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...