2011-05-09 20 views
2

我有一个搜索控制器有大量的参数(搜索条件)。我想使用MVCContrib - IPagination翻阅结果。这一切都很好,问题在于如何在Html.Pager上生成链接。我在视图中尝试这个MVCContrib pager有大量的查询参数和URL路由

@ Html.Pager(Model.Results)。链路(P => Url.Action( “搜索”,新{ Model.Criteria}))

但是不起作用。我是否需要注册路线,以便Url.Action了解如何形成链接?下面

控制器代码....

public ViewResult Search(JobSearch search, int? page, IAuthenticatedUser authenticatedUser) 
    { 
     // perform search 
     var query = _jobRepository.CreateQuery<IPagedJobSearch>(); 

     query.SiteId = authenticatedUser.SiteId; 
     query.JobId = search.Criteria.JobId; 
     query.Lot = search.Criteria.LotNumber; 
     query.Street = search.Criteria.StreetInfo.Name; 
     query.StreetNumber = search.Criteria.StreetInfo.Number; 
     query.Suburb = search.Criteria.Suburb; 
     query.Council = search.Criteria.Council; 
     query.ClientRef = search.Criteria.ClientOrderNumber; 
     query.ItemsPerPage = 15; 
     query.PageNumber = page ?? 1; 

     var pagedResult = query.Execute(); ...... 

回答

1

你不显示你所有的标记,但你需要指定每个参数如下:

<%= Html.Pager(Model.AssetsPagedList) 
     .First("First") 
     .Last("Last") 
     .Next("Next") 
     .Previous("Previous") 
      .Link(currentPage => Url.Action("Browse", new { 
      page = currentPage, 
      searchTerm = Model.SearchModel.SearchTerm, 
      excludedWords = Model.SearchModel.ExcludedWords, 
      minPrice = Model.SearchModel.MinPrice, 
      maxPrice = Model.SearchModel.MaxPrice, 
      locationId = Model.SearchModel.LocationId, 
      catalogId = Model.SearchModel.CatalogId 
     })) 
     %> 

一旦你有正确的参数,你需要创建一个控制器,接受他们每个人:

public ActionResult Browse(int? id, string searchTerm, int? locationId, 
    GridSortOptions gridSortOptions, int? page, string excludedWords, 
    decimal? minPrice, decimal? maxPrice, int? catalogId) 
{ 

} 
+0

我希望不列出所有参数和获取模型绑定使用我的标准对象,(它具有所有的参数)。 – CRG 2011-05-09 02:30:23

+0

你可以问MVCContrib网站,但它不支持,据我所知 – rboarman 2011-05-09 14:35:13