如何获取形式为card_number的值传递给控制器​​?

时间:2018-11-15 19:08:56

标签: asp.net-mvc datatables

如何获取card_number的值传递给控制器​​? 每次我提交表单时,表单变量都会为NULL

查看:

    @Html.EditorFor(model => model.card_number, new { htmlAttributes = new { @id = "card_number" } })

<script>
var frm = $('#formFilter');
    function OnFormSubmit() {
            $.ajax({
                type: frm.attr('method'),
                url: frm.attr('action'),

                data: function (frm) {

                    frm.card_number = $('#card_number').val();

                },

                success: function (data) {

                    $("#dataResult").html(data);
                    $('#dataTable').DataTable({
                        "dom": 'lifrtp'

                    });
                }
            });
        }
</script>

控制器:

 private List<testtest> GetListChanges(Report changeControl)
        {
          ...logic here....

            return returnListhere;
        }

1 个答案:

答案 0 :(得分:0)

$。ajax方法选项的data属性应该是代表您的数据的对象或字符串。使用当前代码,您正在为此设置function

var d = {
            card_number:  "1234",
            someOtherPropertyNameOfReport: "Hello"
        };

$.ajax({
          type: frm.attr('method'),
          url: frm.attr('action'),
          data: JSON.stringify(d),
          contentType:"application/json",
          success: function (data) {
             console.log(data);
          }
 });

现在,jquery将发送Content-Type请求标头值设置为application/json的请求,并且请求正文中的请求数据(JavaScript对象的字符串化版本)和模型绑定程序将能够正确读取并假定视图模型的结构与您的JavaScript对象结构匹配,然后将其映射到您的视图模型。

如评论中所建议,尝试使用serialize()方法。很简单,您不需要手动构建对象。

您的控制器操作方法也应为public