将模型从JQuery发布到ASP.NET核心WebAPI失败



我正在做一个项目,我被一些相对琐碎的事情难住了。我的项目是ASP。NET核心网页项目,但它也有一个单一的API控制器在那里为某些功能,只需要一个API。我的控制器如下所示:

[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#模型。

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方法的参数中删除该模型,或者将其声明为动态的,那么我就会出现NotImplemented错误。如果我将参数声明为动态的,那么我就可以探索并查看对象上的属性。显然,我不想简单地让代码中的所有内容都是动态的。我觉得,也许,这可能与JSON编码有关,但是。。。耸肩

不管怎样,也许我的大脑今晚刚刚被炸了,所以我想我会把它贴在这里,希望可能会有一个明显的答案,我完全忽略了。

好吧,我现在有了答案,我在Postman中厌倦了,得到了一个详细的答案。这很奇怪。基本上,它说它无法将ProductId的值转换为int。这当然很奇怪,因为它已经是int了,即使表示为字符串C#也应该不会有问题;1〃;(在本例中,这是我传递的值(转换为值为1的Int。

果不其然,我将代码稍微更改为parseInt(pid(,它就开始工作了。

最新更新