【发布时间】:2020-12-03 07:28:29
【问题描述】:
我尝试了已在此站点上发布的不同方法,但似乎没有任何效果。 我想创建一个服装网站(个人项目)。网站上的产品有自己的类,是这样构建的:
public class Product
{
public string ProductName { get; set; }
public string ProductPrice { get; set; }
public int Quantity { get; set; }
}
购物车是另一个包含Product 对象列表的类,这个类是这样构建的:
public class ShoppingCart
{
[Key]
public int Id { get; set; }
List<Product> ProductList { get; set; }
public string ClientName { get; set; }
public string ClientAddress { get; set; }
public string ClientMail { get; set; }
}
我创建了一个 API 控制器类并认为可以解决问题。它看起来像这样:
[Route("api/Shopping")]
[ApiController]
public class ShoppingCartController : ControllerBase
{
[HttpPost]
public ShoppingCart Save([FromBody] ShoppingCart s)
{
return s;
}
}
在我的 JavaScript 代码中,我创建了我的 JSON 对象并尝试像这样发布它:
var orderB = document.getElementById("orderB");
orderB.addEventListener("click", function () {
var inputName = document.getElementById("inputName").value;
var inputAddress = document.getElementById("inputAddress").value;
var inputMail = document.getElementById("inputMail").value;
var auxArray = [];
for (var i = 0; i < productsAux.length; i++) {
auxArray[i] = { "productName": productsAux[i].titlu, "productPrice": productsAux[i].pret, "quantity": localStorage.getItem(productsAux[i].titlu)};
}
var shoppingCart = {
productList: auxArray,
clientName: inputName,
clientAddress: inputAddress,
clientMail: inputMail
};
$.ajax({
type: "POST",
data: JSON.stringify(shoppingCart),
url: "api/shopping/save",
contentType: "application/json charset=utf-8",
}).done(function (res) {
alert(res);
});
在我按下页面上的订单按钮后,我希望看到带有回调结果的警报弹出窗口,我认为这是使用我发送的 JSON 创建的 ShoppingCart 对象。
【问题讨论】:
-
那么......什么不起作用?您是否检查了浏览器控制台以查看是否有任何错误?你检查过实际发布的内容吗?我们需要更多细节。
-
@Nikki9696 我的浏览器控制台没有任何错误。问题是我卡在这一步,我形成了我的 JSON 对象,现在我试图将它传递给我的控制器创建我的 C# 对象,然后将其添加到我的数据库中。在哪里可以看到发布的内容?
-
在你的控制器方法中放置一个断点。
-
@ballonDor,在调试模式下运行你的 api(VS 中的 F5)并在左大括号处放置断点。顺便说一句,您不需要用
[FromBody]标记您的参数。如果操作方法接受复杂对象作为参数,WebAPI 使用注册的 MediaTypeFormatters 进行绑定。 WebAPI 中默认包含 json 内容类型的媒体类型格式化程序。 -
@ballonDor,现在删除 ajax 调用中的最后一个 url 段。网址应为
"api/shopping。默认情况下,WebApi 通过 HTTP 方法类型(GET、POST 等)指定调用方法,如果没有明确指定路由。
标签: javascript json asp.net-mvc api asp.net-core