[英]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.