我的第二个参数'@ 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>
答案 0 :(得分:0)
好的,你可以将一个viewmodel传递给一个动作但是之前声明它需要是一个GET方法,所以用HttpGet属性标记你的动作。 MVC框架将查询字符串转换/绑定到您的视图模型。
您的控制器应如下所示:
[HttpGet]
public ActionResult Search(ViewModel viewModel)
{
\\ do something useful here and return ActionResult .....
}
您需要向ViewModel添加页面属性,并且方法允许您的.cshtml代码设置页码并将viewmodel作为对象返回。 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>
&#13;
注意:我只使用简单的viewModel,并且没有尝试使用包含集合或列表的viewModels。