MVCContrib пейджер с большим количеством параметров запроса и маршрутизацией URL - PullRequest
2 голосов
/ 09 мая 2011

У меня есть контроллер поиска, который имеет большое количество параметров (критериев поиска). Я хочу просмотреть результаты с помощью MVCContrib - IPagination. Это все хорошо, проблема в том, как создать ссылку на Html.Pager. Я пробовал это в представлении

@Html.Pager (Model.Results) .Link (p => Url.Action ("Поиск", новый { Модель.Критерии}))

но это не работает. Нужно ли регистрировать маршрут, чтобы 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 Ответ

1 голос
/ 09 мая 2011

Вы не показываете всю свою разметку, но вам нужно будет указать каждый из ваших параметров следующим образом:

  <%= 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)
{

}
...