首页 > 解决方案 > 参数 null 是 ASP 控制器

问题描述

我向我的控制器发布了一个XmlRequest带有本机 JavaScript 的内容,但它不接受请求正文作为参数。即,null即使参数是字符串,它也会将其读取为a。

请求:

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 的结构可变或不均匀,则可以使用这种方法。

尽管必须有其他一些方法来处理这个问题。

标签: c#asp.netasp.net-mvc

解决方案


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

推荐阅读