我正在尝试使用AJAX将数据发送到MVC Controller方法,但是我不知道我在做什么错。
这是AJAX呼叫
$.ajax({
type: 'POST',
url: invokingControllerActionUrl,
data: "it is just a simple string",
success: function (data) {
window.location.href = link;
}
});
这是控制器方法。它被调用,但参数始终为null。
public IActionResult OnPostTest([FromBody] string stringValue)
{
// stringValue is always null :(
}
答案 0 :(得分:1)
根据您从JS发送的Content-Type
,您可能需要正确地将字符串编码为表单值
...
data: 'stringValue="it is just a simple string"',
...
或例如JSON:
...
data: '{stringValue: "it is just a simple string"}',
...
另请参阅this discussion
不幸的是,我还没有找到一种通过参数传递未格式化数据字符串的简便方法。根据{{3}},您可以执行以下操作:
public IActionResult OnPostTest()
{
Stream req = Request.Body;
req.Seek(0, System.IO.SeekOrigin.Begin);
string stringValue = new StreamReader(req).ReadToEnd();
...
// process your stringValue here
...
}
答案 1 :(得分:1)
将您的ajax调用更改为此
$.ajax({
type: 'POST',
url: invokingControllerActionUrl, // Confirm the Path in this variable Otherwise use @Url.Action("OnPostTest", "InvokingController")
data: {stringValue: "it is just a simple string"},
success: function (data) {
window.location.href = link;
}
});
并删除[FromBody]。同样,最好定义type post。没必要
[HttpPost]
public IActionResult OnPostTest( string stringValue)
{
// stringValue is always null :(
}