我有一个显示搜索屏幕和结果列表的视图。要隐藏起始结果列表。
单击搜索按钮,而不是使用Html.BeginForm将视图发布回控制器,它会调用一个JavaScript事件处理程序。
Handler以下列形式传递复杂对象:
{ "searchData":
{ "ticketNumberCompare":0,
"ticketSearchTextFrom":"0",
"ticketSearchTextTo":null,
"ticketDateCompare":1,
"startDate":"2017-01-06T00:00:00",
"endDate":"2017-01-13T00:00:00",
...
etc
...
},
"searchMode":
{ "mode":2,
"pageNumber":1,
"pageSize":5,
"sortDirection":"desc",
...
etc
...
"ValidationErrorMessages":null
}
}
通过使用Json.Stringify,我已经将上述结构转换为c#MVC 5控制器中的函数使用,定义如下。
[HttpPost]
public JsonResult GetSearchResultsJson(ComplexObject searchCriteria, int? page)
{
}
此函数返回使用包含数据库结果的模型从Razor视图呈现的html。
当我点击初始搜索的提交按钮时,所有工作都会正常显示,并显示五条记录的部分视图,其中显示正确的pageList值。
当我点击pageList项目时,我找不到页面错误。
在检查ajax调用初始加载时,它将通过此问题顶部结构的Json.Stringify。但是pageList项不是,它们只是通过页面
附录:
哦,我忘了提到我已经升级了这个函数来使用一个对象而不是过去传递的四个字符串,因为新的超级搜索现在有大约30个属性。在更改之前,代码工作正常。