使用JQuery$.ajax进行JSON模型绑定,而不将traditional设置为true

使用JQuery$.ajax进行JSON模型绑定,而不将traditional设置为true,jquery,asp.net-mvc,asp.net-mvc-3,Jquery,Asp.net Mvc,Asp.net Mvc 3,我在应用程序中使用jQuery1.6.1和jQueryUISortable,并注意到JSON模型绑定停止工作。我必须将$.ajax的“传统”参数设置为true,才能使其工作 $('.tracks').sortable({ update: function (event, ui) { var order = $(this).sortable('toArray'); $.ajax({ url: '/controller/action/

我在应用程序中使用jQuery1.6.1和jQueryUISortable,并注意到JSON模型绑定停止工作。我必须将$.ajax的“传统”参数设置为true,才能使其工作

$('.tracks').sortable({
    update: function (event, ui) {
        var order = $(this).sortable('toArray');

        $.ajax({
            url: '/controller/action/',
            type: 'post',
            traditional: true, // For model binding to work
            data: { 'order': order }
        });
    }
});
我的控制器

[HttpPost]
public ActionResult Order(string[] order)
{
    return new EmptyResult();
}
显然,JQuery改变了使用数组时post变量名的形成方式,在末尾添加了[]。这一变化显然是针对PHP和Ruby用户的


在我当前的ASP.NET MVC代码中,是否有一个简单的更改可以使模型绑定不使用传统方式工作?

没有,但您可以执行以下操作:

jQuery.ajaxSettings.traditional = true;

在母版页中(如果使用的话)

或者在MVC3的情况下,布局。我对此也很感兴趣,因为我希望jQuery在不使用方括号的情况下序列化数组,而不恢复到“传统”序列化,因为它不能很好地序列化对象。遗憾的是,只有一个选项可以控制所有这些。