模型绑定到AJAX突然无法正常工作

时间:2015-03-06 14:48:12

标签: c# jquery ajax model-binding

我有一个AJAX POST请求,它应该将用户的搜索过滤器发送到控制器操作并返回适当的结果。这完美地工作,然后它就停止了工作。我没有改变任何东西,它工作正常,模型完全按预期绑定,然后它刚刚破坏,现在它只会绑定到非数组项。

这是我的完整Jquery AJAX代码:

var parent = $('.recipe-search > .search-form > .filter-panel > .area');
    var searchobj = {
        SearchTerm: $(parent).find('input.search-terms').val(),
        TimeRange:
            [
                $(parent).find('div.time-range').slider("values", 0),
                $(parent).find('div.time-range').slider("values", 1)
            ],
        DifficultyRange: [
            $(parent).find('div.difficulty-range').slider("values", 0),
            $(parent).find('div.difficulty-range').slider("values", 1)
        ],
        Vegetarian: $(parent).find('input.vegetarian').is(':checked'),
        Vegan: $(parent).find('input.vegan').is(':checked'),
        DietTags: $(parent).find('input.diet-tags').val().split(' ')
    };

    $.ajax({
        type: "POST",
        url: $('.recipe-search > .search-form').attr('action'),
        data: searchobj,
        error: function () {
            alert("There was an error getting your search results, please try again");
        },
        success: function (result) {
            popresults(result);
        }
    });

这是C#模型:

对于想知道滑块是JQuery UI滑块的人来说。

在Chrome网络标签中,我可以看到请求按预期发送

然而,当遇到断点时查看调试监视窗口,很明显它们没有正确绑定到模型

我会重复自己,我知道你们中的一些人会打电话给我说我确实改变了一些东西,我必须这样做但是我并没有在它完全按照预期工作之间改变它,而是它没有工作

让我觉得奇怪的是,请求中发送的数组(查看网络标签照片)似乎是将两个值作为单独的属性而不是数组中的值发送。

1 个答案:

答案 0 :(得分:0)

似乎在AJAX代码中添加两行修复了这个问题:

datatype: "json", traditional: true

现在它完全符合预期。