将JavaScript对象传递给控制器

时间:2018-12-27 07:16:23

标签: javascript c# ajax .net-core

我正在尝试使用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; }
  }

以及网站上对象的屏幕截图:

enter image description here

2 个答案:

答案 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();
  }