【发布时间】:2015-07-22 06:37:28
【问题描述】:
我的第二个参数“@Html.PagedListPager”应该使用什么? 如果我的控制器中有一个动作可以接受这样的视图模型
[HttpPost]
[AllowAnonymous]
public ActionResult Search(HomePageViewModel viewModel)
{
var pagedList = repository.GetYogaList(viewModel.SearchQuery, viewmodel.Date)
viewModel.YogaList = pagedList;
if (Request.IsAjaxRequest())
{
return PartialView("_mySpaces", viewModel);
}
return View(viewModel);
}
以及包含分页列表 html 助手的部分页面
这里是部分'_mySpaces.html'
@model HomePageViewModel
<div id="yogaSpaceList">
<div class="pagedList">
@Html.PagedListPager(Model.YogaSpaces, page => Url.Action("Search", new { Model }), PagedListRenderOptions.MinimalWithItemCountText)
</div>
@foreach (var space in Model.YogaSpaces) {
<div>
<h4>@space.Overview.Title</h4>
<div>
@space.Overview.Summary
</div>
</div>
}
</div>
【问题讨论】:
-
你没有传递你的模型,你传递了一个值 (
int) 来指示要显示的页面。它应该是 GET,而不是 POST 方法。查看PagedList site上的示例 -
如果搜索是我的主要操作,用于首先从我的主页运行我的搜索查询并且我正在传递一个视图模型,我应该为分页创建一个新操作吗?我有点困惑的是,我必须将一些视图模型数据传递给操作,例如搜索查询、日期等。所以除了页面之外,我还需要视图模型数据。
-
@Html.PagedListPager( Model.YogaSpaces, page => Url.Action("Search", new { page = page, searchText = someValue, date = anotherValue, etc }) )之类的东西,然后将这些参数添加到您的 GET 方法中 -
所以我不能使用在视图模型中传递的操作“搜索”?
-
这样做没有意义。您的方法应该是 GET,而不是 POST,并且您不能将包含集合属性的复杂对象传递给 GET 方法(绑定将失败)。无论如何你需要传递的是页码。
标签: html asp.net-mvc pagedlist