簡體   English   中英

為什么對 ASP.NET 控制器操作的 Javascript POST 請求獲取 NULL 參數?

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

你可以在這里找到更多信息

嘗試以下幾點:

  1. 檢查類簽名是否與正在發送的 JSON 匹配。 對於上面的例子,正在發送的 JSON 看起來像

    { "BookTitle": title, "Quantity": "value" }
  2. 另外我看到該類將Quantity定義為int ,因此使用parseInt()Quantity值轉換為int 默認情況下document.getElementById(..).value會給出一個字符串。

     let quantity = parseInt(document.getElementById("quantity").value); var order = { BookTitle: title, Quantity: quantity };
  3. 使用Content-Type作為application/json

  4. [FromBody]屬性添加到model

     BuyBook([FromBody]Models.Order order)
  5. 發送訂單對象,如下所示。
     xmlHttp.send(order);
    或者
    xmlHttp.send(JSON.stringify(order));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM