2015-04-29 6 views
0

Parent Вид:PagedList MVC Html Helper, добавить пары ключ/значение в формате HTML Helper

var pagingModel = new Watchlist_Web.Models.ViewModel.PagingPartialViewModel(); 
       pagingModel.PagedList = Model; 
       pagingModel.UrlAction = "AdminIndex"; 

       Dictionary<string, object> parameters = new Dictionary<string, object>(); 
       parameters.Add("query", Request.QueryString["query"]); 
       parameters.Add("modelClass", Request.QueryString["nodeClassId"]); 

       pagingModel.RouteValues = new RouteValueDictionary(parameters); 

       pagingModel.ContainerDivClasses = "pagination-sm col-md-5"; 
@Html.Partial("_PagingPartial", pagingModel) 

Частичный вид:

@using PagedList; 
@using PagedList.Mvc; 

@model Watchlist_Web.Models.ViewModel.PagingPartialViewModel 
@Html.PagedListPager(Model.PagedList, page => Url.Action(Model.UrlAction, 
     new RouteValueDictionary(new { page = page })), 
     new PagedListRenderOptions() 
       { 
        DisplayPageCountAndCurrentLocation = true, 
        DisplayLinkToFirstPage = PagedListDisplayMode.IfNeeded, 
        DisplayLinkToLastPage = PagedListDisplayMode.IfNeeded, 
        ContainerDivClasses = new[] { Model.ContainerDivClasses } 
       }) 

Я пытаю добавить Model.RouteValues ​​в частичном виде в формате HTML Помощник для PagedListPager. Второй параметр для URL.Action - это то, где мне нужно указать значения моего маршрута, и только «страница» отлично работает. Тем не менее, я пытаюсь найти способ добавить пары ключ/значение Model.RouteValues ​​к этому параметру.

+0

Вы имеете в виду, как это: '@ Html.PagedListPager (модель, страница => Url.Action ("Index" , new {search = ViewBag.Search, page = page}), PagedList.Mvc.PagedListRenderOptions.ClassicPlusFirstAndLast) ' –

+0

Нет, больше похоже на цикл for, который может добавлять все значения. Итак, если у Model.RouteValues ​​были пары значений «query»/«myQuery» и «name»/«myName», второй параметр Url.Action в конечном итоге имел бы страницу, запрос и имя. Он должен быть динамическим, чтобы этот частичный вид можно было вызывать с любой родительской страницы и предоставлять другой документ RouteValueDictionary. – blgrnboy

+0

Это может помочь вам после этого http://stackoverflow.com/questions/13533778/mvc-dynamic-routevalues-for-actionlinks –

ответ

0

Внедрена утилита класса и метода, которая добавляет «страницу» в новый словарь.

Utility Метод:

public static RouteValueDictionary GetPagingRouteValDictionary(int page, RouteValueDictionary dict) 
    { 
     if (dict["page"] != null) 
     { 
      dict.Remove("page"); 
     } 

     var newDict = new RouteValueDictionary(dict); 
     newDict.Add("page", page); 

     return newDict; 
    } 

Частичный вид:

@Html.PagedListPager(Model.PagedList, page => Url.Action(Model.UrlAction, 
    Watchlist_Web.Utility.RouteValueDictUtil.GetPagingRouteValDictionary(page, Model.RouteValues)), 

    new PagedListRenderOptions() 
       { 
        DisplayPageCountAndCurrentLocation = true, 
        DisplayLinkToFirstPage = PagedListDisplayMode.IfNeeded, 
        DisplayLinkToLastPage = PagedListDisplayMode.IfNeeded, 
        ContainerDivClasses = new[] { Model.ContainerDivClasses } 
       })