参数null为ASP控制器



我向我的控制器发布了一个带有本机JavaScript的XmlRequest,但它不接受请求体作为参数。即,即使参数是字符串,它也会将其读取为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]'属性保留(,获得一个奇怪的对象,该对象给出调用ToString((方法的JSON消息。如果传入JSON的结构可变或不均匀,可以使用此方法。

尽管一定有其他的方式来处理这个问题。

您可以创建对象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);
}

在POST中,您必须将Text参数作为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);

相关内容

  • 没有找到相关文章

最新更新