我在使用Jquery AJAX作为GET请求时遇到了问题。出现了一些原因,导致ASP.NET MVC模型绑定程序无法绑定我的过滤器项。结果是调用了操作结果,但创建了一个空对象。
然而如果我从HTTP Get更改为HTTP Post,那么就可以正常工作。这是为什么呢?据我所知,最好使用GET,因为服务器上的数据不会改变。
以下是我的代码简化版:
AJAX:
然而如果我从HTTP Get更改为HTTP Post,那么就可以正常工作。这是为什么呢?据我所知,最好使用GET,因为服务器上的数据不会改变。
以下是我的代码简化版:
AJAX:
$.ajax({
url: url,
contentType: 'application/json',
dataType: 'json',
type: "GET",
data: "{'filter':" + ko.toJSON(model.filter) + "}",
error: function (xhr, textStatus, errorThrown) {
},
success: function (returnedData) {
}
ActionResult:
[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; }
}
GET
在发布路由参数(查询字符串)方面有一些限制。GET
无法使用复杂参数进行发布。 - Imad Alazanidata: ko.toJSON(model.filter)
吗?我认为这可能会起作用。至少对于这个简单的情况,我相信它应该可以。 - AaronLS