[英]MVC Model binding not working as expected on complex type from AJAX request
[英]Model Binding to AJAX suddenly not working
我有一个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网络标签中,我可以看到请求按预期发送
但是,当遇到断点时查看调试监视窗口,很明显它们没有正确绑定到模型
我会重复一遍,而且我知道你们中的一些人会在这个问题上叫我说我确实改变了一些东西,我必须这样做,但我并没有改变它与预期完全一致的工作,而且它没有用。
确实令我感到奇怪的是,请求中发送的数组(查看网络选项卡照片)似乎是将两个值作为单独的属性而不是数组中的值发送。
好吧,似乎在AJAX代码中添加两行修复了这个问题:
datatype: "json", traditional: true
现在它完全按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.