jQuery ajax request MVC 在 JSON 中绑定 JSON



我的MVC网站遇到了绑定问题。

发送以下 ajax 请求:

var arguments = { 
    search: "test", 
    skipCount: 0, 
    range: 20, 
    filter: getFilter() 
};
$.ajax({
    url: "HTMLSearchResult",
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    data: arguments,
    success: function (response) {
        //Showing search results.
    }
});

获取过滤器函数:

function getFilter() {
    var filter = {},
        fromDate = $('#TodoSearchFilter_From').val(),
        toDate = $('#TodoSearchFilter_To').val();
    if (fromDate)
        filter.From = new Date(Date.parse(fromDate));
    else
        filter.From = null;
    if (toDate)
        filter.To = new Date(Date.parse(toDate));
    else
        filter.To = null;
    filter.Assigned = $('#TodoSearchFilter_Assigned').val() == 'true';
    filter.NotAssigned = $('#TodoSearchFilter_NotAssigned').val() == 'true';
    filter.Services = $('#TodoSearchFilter_Services').val() == 'true';
    filter.WorkOrders = $('#TodoSearchFilter_WorkOrders').val() == 'true';
    filter.Booked = $('#TodoSearchFilter_Booked').val() == 'true';
    filter.NotBooked = $('#TodoSearchFilter_NotBooked').val() == 'true';
    return filter;
}

请求已正确发送(通过 Fiddler2 控制),但控制器无法正确接收它。"搜索","跳过计数"和"范围"已正确填充。

下面是浏览器中的控制台和 Visual Studio 中的调试器的打印:

https://i.stack.imgur.com/BEPP6.png

为什么此绑定不起作用?

我也尝试使用JSON.stringify,但没有任何成功。我觉得既然前 3 个参数发送正确,那么第四个参数也应该正确发送。

我只通过将过滤器转换为 JSON 字符串来解决它。

var arguments = {
    search: searchString,
    skipCount: skipCount,
    range: range,
    filter: JSON.stringify(getFilter())
};

然后在控制器上接收它时,我使用 JsonConvert.DeserializeObject 来创建我需要的对象。

看起来像一个黑客,但至少它现在工作正常。

最新更新