[英]Posting a Model from JQuery to ASP.NET Core WebAPI Failure
我正在做一個項目,但我對一些應該相對微不足道的事情感到困惑。 My project is an ASP.NET Core Web Pages project, but it also has a single API Controller in there for certain features that just need an API. 我的 Controller 如下所示:
[Route("api/[controller]")]
[ApiController]
public class OrderController : Controller
{
public IActionResult Index()
{
return View();
}
[HttpPost]
[Route("AddItem")]
public IActionResult AddItem(AddToCartModel model)
{
throw new NotImplementedException();
}
}
要將數據發布到它,我在我的一個頁面中有以下 jQuery 代碼。
var addToCart = {
Quantity: qtty,
ProductId: pid,
Success: true,
Message: ""
};
console.log(addToCart);
var response = $.ajax({
method: 'POST',
url: '/api/Order/AddItem',
data: JSON.stringify( addToCart ),
dataType: 'json',
contentType: 'application/json'
});
以防萬一這對任何人都很重要,這是 C# model。
public class AddToCartModel
{
public int ProductId { get; set; }
public int Quantity { get; set; }
public bool Success { get; set; }
public string Message { get; set; }
}
當我嘗試發布數據時,我收到服務器錯誤 (415)。 奇怪的是,如果我從 Controller 方法的參數中刪除 model,或者將其聲明為動態,我將解決我的 NotImplemented 錯誤。 如果我將參數聲明為動態,那么我可以在 object 上探索並查看我的屬性。 顯然,我不想簡單地讓我的代碼中的所有內容都動態化。 我覺得,也許,這可能與 JSON 編碼有關,但是……聳聳肩??
無論如何,也許我的大腦只是熬夜了,所以我想我會把它貼在這里,希望可能會有一個我完全忽略的明顯答案。
好的,我現在有了答案,我在 Postman 中厭倦了它,得到了詳細的答案。 這很奇怪。 基本上它說它無法將 ProductId 的值轉換為 int。 這當然很奇怪,因為它已經是一個 int,甚至表示為字符串 C# 將值“1”(在本例中是我傳遞的值)轉換為值為 1 的 Int 應該沒有問題。
果然,我將代碼稍微更改為 parseInt(pid) 並開始工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.