html - 将 View 模型传递给我的操作时如何使用 pagedlistpager

标签 html asp.net-mvc pagedlist

“@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/

相关文章:

HTML &lt;!doctype html public "">

asp.net-mvc - 单元测试我的 Controller 方法会导致一个空的 ViewName?

javascript - AJAX 成功时未接收数据,结果显示为 "undefined"

c# - 我怎样才能使我产生的 IEnumerable 与 PagedList 一起工作

c# - 多选过滤 ASP.Net MVC 中的分页 View

jquery - Cheerio js html

jquery - 无法通过单击事件检查必填字段

c# - 将控制值作为 html.Pagedlist 参数传递

jquery - Bootstrap 3.0 的 DropDown 登录表单

c# - 在 Azure 移动服务中找不到属性 nameId