[英]Download a File by POST (HttpPost action) on ASP.NET MVC controller action using Javascript
[英]Why Javascript POST Request to ASP.NET controller action getting NULL parameter?
当我从 JavaScript 文件发送XmlHttpRequets
时,我的 ASP .NET 控制器方法的参数保持为空。 JavaScript 调试器显示请求发送成功。 为什么它不起作用?
JavaScript 函数:
function BuyBook(title) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("POST", "home/BuyBook", true);
xmlHttp.setRequestHeader("Content-Type", "multipart/form-data");
var order = { BookTitle: title, Quantity: document.getElementById("quantity").value };
xmlHttp.send(JSON.stringify({ order: order }));
console.log(xmlHttp.responseText);
}
控制器方法:
[HttpPost]
public IActionResult BuyBook(Models.Order order)
{ .... }
Models.Order 类:
public class Order
{
[Required]
public string BookTitle { get; set; }
[Range(1,100)]
public int Quantity { get; set; }
}
像这样更新你的方法:
[HttpPost]
public IActionResult BuyBook([FromBody] Models.Order order)
{ .... }
你可以在这里找到更多信息
尝试以下几点:
检查类签名是否与正在发送的 JSON 匹配。 对于上面的例子,正在发送的 JSON 看起来像
{ "BookTitle": title, "Quantity": "value" }
另外我看到该类将Quantity
定义为int
,因此使用parseInt()
将Quantity
值转换为int
。 默认情况下document.getElementById(..).value
会给出一个字符串。
let quantity = parseInt(document.getElementById("quantity").value); var order = { BookTitle: title, Quantity: quantity };
使用Content-Type
作为application/json
将[FromBody]
属性添加到model
BuyBook([FromBody]Models.Order order)
xmlHttp.send(order);
或者xmlHttp.send(JSON.stringify(order));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.