2012-03-12 5 views
0

Я ищу лучший способ реализовать пейджер в соответствии с следующим простым требованием.Простой пользовательский пейджер в MVC 3

Я хочу страницу, как этот

<Pager 1 2 3 4 ...> 

<Partial View> 

контроллер Мои действия будут выглядеть примерно так ...

public PartialViewResult DisplayRecordDetails(int recordNumber) 
    { 
     MyRecord mr = GetRecord(recordNumber); 
     return PartialView(mr); 
    } 

Когда я нажимаю на "1" (индекс страницы = 1), I передайте 1 в качестве параметра методу действия DisplayRecordDetails и загрузите частичный вид с записью 1.

Когда я нажимаю «2» (page index = 2), я передаю 2 в качестве параметра методу действия DisplayRecordDetails a nd загрузить частичное представление с записью 2 и т. д.

У меня будет информация об общем количестве предметов и текущей информации индекса страницы в моем распоряжении. Теперь, как я могу генерировать пейджер динамически с этой информацией?

Я попытался найти библиотеки пейджеров/помощников, но все они предназначены для сетей. Как я могу использовать их для своей ситуации? У меня нет сетки. У меня только частичный вид, который мне нужно динамически загружать в зависимости от номера страницы.

ответ

1

Вы можете создать модель представления, которая будет содержать все идентификационные номера:

public class MyViewModel 
{ 
    // the currently selected id 
    public int Id { get; set; } 

    // a list of available ids 
    public int[] Ids { get; set; } 
} 

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

public ActionResult Index(int? id) 
{ 
    var model = new MyViewModel 
    { 
     Id = id ?? 0, 
     Ids = new[] { 563, 845, 845 } // those will come from your datasource 
    }; 
    return View(model); 
} 

и в соответствующем окне вы могли перебрать эти идентификаторы и генерировать ссылки:

@model MyViewModel 
<div> 
    @Html.Action("DisplayRecordDetails", new { recordNumber = Model.Id }) 
</div> 
@for (var i = 0; i < Model.Ids.Length; i++) 
{ 
    <span>@Html.ActionLink((i + 1).ToString(), "Index", new { id = i })</span> 
} 
+0

T Хэнки Дарин. Это довольно хорошее решение для небольшого количества страниц. Теперь меня беспокоит появление пейджера, если у меня большой выбор. Любые трюки для функций «Следующий» и «Предыдущий»? – Max

+0

Я просто нашел простой плагин jQuery, который я могу использовать. http://blog.ajaxmasters.com/jquery-pagination-plugin/ Я просто установил элементы на странице = 1, и это работает как шарм ... – Max