簡體   English   中英

將 Model 從 JQuery 發布到 ASP.NET 核心 WebAPI 失敗

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

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