C# MVC中的页面列表:使用Ajax加载,无法保留搜索词
我在谷歌上搜索过,虽然有几个人问过这个问题,但我发现没有人给出有效的解决方案 我使用PagedList包在MVC应用程序中创建页面。我正在通过Ajax加载页面。问题是我无法保留我的搜索词(更改页面就像什么都没有被过滤过一样) 以下是我的方法:C# MVC中的页面列表:使用Ajax加载,无法保留搜索词,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我在谷歌上搜索过,虽然有几个人问过这个问题,但我发现没有人给出有效的解决方案 我使用PagedList包在MVC应用程序中创建页面。我正在通过Ajax加载页面。问题是我无法保留我的搜索词(更改页面就像什么都没有被过滤过一样) 以下是我的方法: public PartialViewResult Search(string q, int? page, int? pageSize) { ViewBag.SearchQuery = q; //Searching and sorting l
public PartialViewResult Search(string q, int? page, int? pageSize)
{
ViewBag.SearchQuery = q;
//Searching and sorting logic, not really relevant
return PartialView("_SearchedTable", listObj.ToPagedList((int)page, (int)pageSize));
}
如果我在局部视图中查看ViewBag.SearchQuery项,我可以看到它,这正是我所期望的。但每当我更改页面时,发送到控制器的所有内容都是空的。这是我的页面项目
@Html.PagedListPager(Model, page => Url.Action("Search",
new { q = ViewBag.SearchQuery, page = page }),
PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(
new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "main-table"}))
查看调试器中的intellisense,所有内容都具有我期望的值,直到该元素再次将数据发送到搜索方法,在这种情况下,所有内容都以“null”的形式从搜索方法中出来。当我不使用Ajax时,让它在每次页面更改时调用完整索引视图方法,它可以很好地保留搜索。我唯一添加的是第三个参数,它支持不引人注目的ajax和ajax选项
编辑:我通过将HTML助手放在局部视图中解决了这个问题,这样每次刷新时都会执行它。否则,@Url.Action()方法生成的锚定标记将永远不会更改,并且由于第一次加载页面时,所有内容都为null,因此在输入搜索词时,它们从未更新
@Html.PagedListPager(Model.MovieInforamtions, page => Url.Action("GetMovieDatabase", page }), PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing( new AjaxOptions(){ HttpMethod = "GET", UpdateTargetId = "movie_grid"}))
@arjit的评论帮助解决了类似的问题。其中movie\u grid是一个DIV的id。是的,你提到了DIV吗?显示更多的代码,然后尝试
@Html.PagedListPager(Model.movieinformations,page=>Url.Action(“GetMovieDatabase”,page}),PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(新的AjaxOptions(){HttpMethod=“GET”,UpdateTargetId=“movie\u grid”}))