我正在尝试使用JavaScript将对象传递给控制器。
我使用了两个参数_amount
和_total
,但是
回发时控制器中的值是空的。
有什么想法为什么我无法获得这些价值?
另外,如果我想获取_data
,这是一个包含不同内容的对象
价值观,我将如何实现?
var itemsCart=toys.cart._items;
$.ajax({
url: '@Url.Action("SuccessView", "Home")',
type: 'POST',
data: itemsCart,
success: function (response) {
alert(response);
},
error: function (xhr, ajaxOptions, throwError) {
alert(xhr.responseText);
}
});
控制器:
public IActionResult SuccessView(List<ProductViewModel> products)
{
return View();
}
查看模型:
public class ProductViewModel
{
public string _amount { set; get; }
public string _total { set; get; }
}
以及网站上对象的屏幕截图:
答案 0 :(得分:1)
听起来像是问题在于您的参数声明为products
,但是您的AJAX data
参数名称与控制器操作参数名称不匹配。尝试改用此设置:
JS
$.ajax({
url: '@Url.Action("SuccessView", "Home")',
type: 'POST',
data: { products: itemsCart },
traditional: true,
success: function (response) {
alert(response);
},
error: function (xhr, ajaxOptions, throwError) {
alert(xhr.responseText);
}
});
控制器操作
[HttpPost]
public IActionResult SuccessView([FromBody] List<ProductViewModel> products)
{
// do something
return new JsonResult("OK");
}
请注意,由于您的AJAX调用定义为type: POST
,因此必须将[HttpPost]
属性应用于控制器操作。
相关问题:
Passing A List Of Objects Into An MVC Controller Method Using jQuery Ajax
答案 1 :(得分:0)
替换
data: { products: itemsCart }
与
data: ({ products: itemsCart })
控制器:
public IActionResult SuccessView(ProductViewModel products)
{
//return View();
}