无法将查询字符串数组映射到对象

时间:2014-06-11 11:28:58

标签: c# asp.net-mvc query-string jquery-datatables

我正在使用JQuery DataTables进行服务器端处理,我正在尝试将部分查询字符串请求映射到我的操作中的对象。此查询字符串请求来自由datatables

处理的AJAX调用

对于请求中的第一列(已解码),查询字符串参数如下所示:

order[0][column]:0
order[0][dir]:asc

在我的控制器中,我有这个动作:

[HttpGet]
public JsonNetResult Employees(int start, int length, int draw, Sort[] order)

我有一个看起来像这样的排序类:

public class Sort
{
    public int column { get; set; }
    public string dir { get; set; }
}

在发出请求时会填充订单数组,并显示它在集合中有1个项目。但是,column属性始终为0,dir始终为null。我缺少什么以便填充这些字段?

修改

我可以轻松地检索我喜欢的值:

var result = Request.QueryString["order[0][dir]"];

但是,如果有可能的话,我正在寻找模型绑定吗?

2 个答案:

答案 0 :(得分:0)

如果您使用mvc,请尝试将此方法替换为:

OLD

public JsonNetResult Employees(int start, int length, int draw, Sort[] order)

NEW

public JsonNetResult Employees(formCollection form)
{
  Employees e = new Employees();
  TryUpdateModel<Employees>(e, form);

}

答案 1 :(得分:0)

适用于我,我使用此代码:

类ViewModel

public class DocumentViewModel
    {
        public int Id { get; set; }
        public string Number { get; set; }
        public int EmissionDate { get; set; }
        public int Institute { get; set; }
        public string MaturityDate { get; set; }
    }

<强> HTML

@using(Html.BeginForm("About", "Home", FormMethod.Post, new { @id = "testform" }))
{
    <input type="text" name="Number" />

    <input type="text" name="EmissionDate" />

    <input type="text" name="MaturityDate" />

    <input type="submit" id="send" value="Enviar" />
}

<强> Jquery的

<script type="text/javascript">
        $(function () {
            $("#send").click(function (event) {
                event.preventDefault();

                console.log($("#testform").serialize());

                $.post("@Url.Content("~/Home/About")", $("#testform").serialize())
                .done(function (data) {
                    alert("Data Loaded: " + data);
                });
            });
        });
    </script>

试试此代码

相关问题