我在使用 Jquery AJAX 作为 GET 请求时遇到问题。由于某种原因,ASP.NET MVC 模型绑定器似乎无法绑定到我的过滤器项。发生的情况是调用了操作结果,但创建了一个空对象。
但是,如果我从 HTTP Get 更改为 HTTP Post,那么它可以工作。为什么会这样?据我了解,使用 GET 会更好,因为服务器上没有数据发生变化。
这是我的代码的精简版本:
阿贾克斯:
$.ajax({
url: url,
contentType: 'application/json',
dataType: 'json',
type: "GET",
data: "{'filter':" + ko.toJSON(model.filter) + "}",
error: function (xhr, textStatus, errorThrown) {
},
success: function (returnedData) {
}
行动结果:
[HttpGet]
public virtual ActionResult Index(IFilter filter)
{
ViewModel filteredViewModel = GetFilteredViewModel(filter);
if (Request.IsAjaxRequest())
{
return toJSON(filteredViewModel );
}
return View(filteredViewModel );
}
筛选:
public class Filter: IFilter
{
public Nullable<DateTime> LogDate { get; set; }
public Nullable<int> SpecificItem_ID { get; set; }
}