通过AJAX将数据传递给MVC中的Controller

时间:2017-05-03 04:08:35

标签: javascript jquery ajax asp.net-mvc

我正在尝试将数据传递给控制器​​以进行进一步处理,但我在控制器中得到null,但是js(ajax)的调试无论如何都显示了数字。可能是什么问题?

Ajax:

 $('.toggler_btn').on('click', function (event)
            {
                var id = $(this).attr('data-id');
                    if ($(this).text() === '+') {
                        $.ajax({
                            url: "/List/GetSubItems",
                            type: "POST",
                            contentType: "html",
                            dataType: "text",
                            data: '{"id":"' + id + '"}', // here it show the data, like 5 or some other number
                            success: function (data)
                            {
                                $('.element_wrapper [data-id="' + id + '"]').html(data);
                            }
                            })
                        $(this).html('-');
                    }
                    else $(this).html('+');
            });

控制器:

  [HttpPost]
    public ActionResult GetSubItems(string id) // here I get null
    {
        int pID = 0;
        int.TryParse(id, out pID);
        List<H_Table> list = new List<H_Table>();

        foreach (var item in db_connection.H_Table.Where(i => i.PARENT_ID == pID))
        {
            list.Add(item);
        }
        return PartialView(list);
    }

4 个答案:

答案 0 :(得分:2)

/Users/Harit.Himanshu/bl/sources/webs/google-login/src/LoginButton.js
  11:9   error    'gapi' is not defined                             no-undef
  26:13  warning  'displayText' is assigned a value but never used  no-unused-vars

✖ 2 problems (1 error, 1 warning)

使用此选项只需复制并粘贴

答案 1 :(得分:0)

将您的内容类型更改为“文字”并更改数据。

答案 2 :(得分:0)

您的AJAX请求已设置contentType: "html",但您实际上是在发送JSON(data: '{"id":"' + id + '"}')。您的控制器正在接收string

所以要么改变你的AJAX调用来发送原始字符串:

contentType: "text",
data: { id: id }

...或更新您的控制器以接收JSON。后者可以通过创建这样的东西来实现:

public ActionResult GetSubItems(ViewModel model)

public class ViewModel {
    public string Id { get; set; }
}

编辑:另外,作为参考,您可能希望看到difference between contentType and dataType

答案 3 :(得分:0)

将数据类型更改为&#34; application / json&#34;和数据:

   data :{
          id : id
   }