2016-06-17 11 views
0

Ich habe ein Problem mit pagedList.ASP.NET MVC Filterung Seitenliste

Ich habe eine Aufgabe, eine Ansicht mit Filter-Panel und Auslagerungsliste zu machen.

Meine Ansichten:

Index: Dies ist der Hauptansicht

@model WebUI.Areas.Admin.Models.Product.ProductSearchViewModel 

<div class="row"> 
    <div class="panel panel-default"> 
     <div class="panel-heading text-center"> 
      <h4 class="panel-title"> 
       <a data-toggle="collapse" href="#filter">@Resources.Lang.Filter</a> 
      </h4> 
     </div> 
     <div id="filter" class="panel-collapse collapse"> 
      <div class="panel-body"> 
       @using (Ajax.BeginForm("ProductsList", "Product", new AjaxOptions { UpdateTargetId = "productsList" }, new { @id = "searchForm", @class = "form-horizontal" })) 
       { 
        // some items to filter 
       } 
      </div> 
     </div> 
    </div> 
</div> 

<div id="productsList" class="row"> 
// Here will be rendered partial view with pagedList 
</div> 

Teilansicht mit pagedList

@using PagedList.Mvc 
@model PagedList.IPagedList<WebUI.Models.Product.RegularProductDomainModel> 

@foreach (var item in Model) 
{ 
    @Html.Partial("_ProductSummary", item) 
} 

Страница @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) из @Model.PageCount 

@Html.PagedListPager(Model, page => Url.Action("ProductsList", page = page}), 
    PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "productsList" })) 

-Controller

public ActionResult Index() 
{ 

} 

[HttpPost] 
public ActionResult ProductsList(ProductSearchViewModel model, int page = 1, int pageSize = 5) 
{ 
     using (_unitOfWork = _factory.Create()) 
     { 
    // prepare list of items 

var products = _unitOfWork.ProductsRepository.GetProducts(model.CategoryID, model.BrandID, model.ProductStateID,null,true, model.Code) 
           .ToPagedList(page, pageSize); 
          return PartialView("_ProductsList", products); 
    } 
} 

F Filtern funktioniert großartig. Aber wenn ich Werte filtern und dann paging will, funktioniert es nicht, denn wenn ich auf Paging klicke, habe ich in der Steuerung mein ProductSearchViewModel nur mit den Standardwerten. Wie ich es verstehe, funktioniert es nicht, weil mein PartialView nichts über ProductSearchViewModel weiß, das wie in Index.chtml verwendet wird. Gibt es eine Möglichkeit, mein ProductSearchViewModel beim Paging an den Controller zu übergeben?

Antwort

0

ich zwei mögliche Lösungen sehen ...

1.) Übergeben Sie die ProductSearchViewModel (oder die Werte von ihr) in die Teilansicht, so dass man dann von dort aus weiter in den Pager Helfer übergeben werden kann. Dies kann entweder durch Erstellen eines neuen ViewModel erreicht werden, das das ProductSearchViewModel sowie Ihre Pageed List enthält, oder einfach in ViewData eingefügt werden, bevor die Ansicht zurückgegeben wird.

2.) Verschieben Sie das Paging in die Hauptansicht (Index), damit Sie das ProductSearchViewModel zusammen mit der Seitennummer übergeben können.