“@Html.PagedListPager”的第二个参数使用什么? 如果我的 Controller 中有一个接受这样的 View 模型的操作
[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>
最佳答案
好的,您可以将 View 模型传递回操作,但如前所述,它需要是 GET 方法,因此使用 HttpGet 属性标记您的操作。 MVC 框架会将查询字符串转换/绑定(bind)到您的 View 模型。
你的 Controller 应该看起来像这样:
[HttpGet]
public ActionResult Search(ViewModel viewModel)
{
\\ do something useful here and return ActionResult .....
}
您需要向您的 ViewModel 添加一个页面属性,并且一个方法允许您的 .cshtml 代码设置页码并将 View 模型作为对象返回。 MVC 会将对象转换为操作链接的查询字符串。
Public class ViewModel {
// other properties and stuff
public int? Page { get; set; }
public object ToPagedListParameters(int page)
{
this.Page = page;
return this;
}
}
然后只需对 .cshtml 文件进行小的调整
<div class="pagedList">
@Html.PagedListPager(viewModel, page => Url.Action("Search",viewModel.ToPagedListParameters(page))
</div>
注意:我只在简单的 viewModel 上使用过它,并没有在包含集合或列表的 viewModel 上尝试过。
关于html - 将 View 模型传递给我的操作时如何使用 pagedlistpager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31555611/