如何使用 Ajax 调用 MVC4 传递两个字符串数组

How to pass two String arrays using Ajax call MVC4

我想使用 Ajax.But 将两个字符串数组从视图传递到控制器,同时传递它显示错误 jquery-latest.min.js:4 POST http://localhost:5342/Purchase/ClearCart 500(内部服务器错误) 该方法没有传递给带有中断的 controller.Tried point.Here 是如何传递字符串 []

 var items = $('.mids').map(function () {
        return $(this).val()
    }).get();
    var counts = $('.counts').map(function () {
        return $(this).val()
    }).get();



 if (BOLT.response.txnStatus == 'SUCCESS') {

                    alert("success");
                    $.ajax({
                        url: "/Purchase/ClearCart",
                        type: "POST",
                        contentType: "application/json",
                        //dataType: "text",
                        data: { mid: items, count: counts },
                        success: function (result) {
                            alert("success");
                        },

                        error: function (e) {
                            alert("Failed");
                        }
                    });

它returns"Failed"响应和上面的错误。

Controller

[HttpPost]
        public void ClearCart(string[] mid,string[] count)
        {
        int uid=Convert.ToInt32(Session["uid"]);
        userService.ClearCart(uid, mid,count);

        }

这里是 Mid 和 count 里面的值:

您需要在 POST 期间将值绑定到对象。

  1. 创建Class待绑定
public class AjaxModel{
   public List<int> mid {get;set;}
   public List<int> count {get;set;}

   // Alternatively, try list string
   // public List<string> mid {get;set;}
   // public List<string> count {get;set;}
}
  1. 修改 ClearCart 以在参数中包含 AjaxModel model
[HttpPost]
public ActionResult ClearCart(AjaxModel model)
{
   return Content(model.mid.Count())

   // int uid=Convert.ToInt32(Session["uid"]);
   // userService.ClearCart(uid, model.mid, model.count);
}
  1. 修改 ajax 调用以包含 contentType: application/json
$.ajax({
   url: "/Purchase/ClearCart",
   type: "POST",
   contentType: "application/json",
   data: { mid: items, count: counts },
   success: function (result) {
      alert("success");
   },
   error: function (e) {
      alert("Failed");
   }
});

我通过一些调整解决了@Jerdine Sabio 的回答。

 var clr = new Object();
    clr.mid = items;
    clr.count = counts;
    $.ajax({
        url: "/Purchase/ClearCart",
        type: "POST",
        contentType: "application/json",
        dataType: JSON,
        data: JSON.stringify(clr),
        success: function (result) {
            alert("success");
        },

        error: function (e) {
            alert("Failed");
        }
    });

在控制器中

 public class SampleModel
        {
            public string[] mid { get; set; }
            public string[] count { get; set; }
        }
        [HttpPost]
        public JsonResult ClearCart(SampleModel model)
        {

        int[] matids = Array.ConvertAll(model.mid, int.Parse);
        int[] mcounts = Array.ConvertAll(model.count, int.Parse);

          //rest of the code
        }