【问题标题】:Why does my MVC Action not see my ajax passed object为什么我的 MVC 操作看不到我的 ajax 传递的对象
【发布时间】:2017-10-20 12:33:59
【问题描述】:

Ajax 调用有效,但传递的对象为空。

这是将购物车对象传递给控制器​​操作的简单设置。

调用发生了,但是当它点击 Action 时,man 是空的。

正在发送的paylod(在chrome中)是:

{"man":"testtext2"}

回复是:

{"man":null}

.net caritem:

public class Cartitem
    {
        public string man { get; set; }
    }

Javascript 购物车:

 class cartitem {
            constructor(  _man, ) {
               this.man = _man;
            }
        }

控制器动作:

[HttpPost]
 public ActionResult AddToCart(Cartitem myCartitem)
{
  //ERROR: cartitem values are coming in empty 
  return Json(myCartitem);
}

Javascript

$(".AddLink").click(function () {

  var json = JSON.stringify(c);
  var cartitem = JSON.stringify({
            'man': 'testtext2',
        });

    $.ajax({
            type: "POST",
            url: '@Url.Action("AddToCart", "ShoppingCart")',  
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: cartitem,
            success: function (data) {
                alert("Data Back: " + data.man);
            }
        });

});

编辑 为了消除大量的红色听证会,我简化了代码,使其成为一个字符串(人)。 结果是一样的,MyCaritem 是空的。

【问题讨论】:

  • qtyprice 应该分别是 int 和 decimal 时,您正在发送字符串。将类和参数命名为同一件事也不是一个好主意。我建议将 C# 中的类名更改为 CartItem
  • 添加到上面的评论,使用你在mpn, qty等中定义的变量var dataObject = JSON.stringify({ 'qty': qty, });
  • @Satpal 它们仍然是字符串,因为这就是 attr() 返回的内容。 OP,使用data()获取属性值,或者通过parseInt()parseFloat()运行相关的值
  • 这条注释掉的行 //var c = new cartitem(qty, man, mpn, desc, price, sku); 不起作用,因为类应该是 cartItem,因为 Javascript 区分大小写。我在 dataObject 中为 qty 和 mpm 添加了整数和十进制值。您提供的代码对我有用,我在控制器方法中获取值,它们返回页面作为响应。我认为问题在于您在代码开头从 Html 标记属性中获取了一些空值,并且 sku 字符串为空。
  • 我编辑了代码以考虑所有 cmets,但它仍然不起作用。

标签: javascript jquery ajax asp.net-mvc


【解决方案1】:

将 [FromBody] 添加到 Action 方法例如

public ActionResult AddToCart([FromBody] Cartitem myCartitem) {

}

损失了 2 天!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    相关资源
    最近更新 更多