Простой пользовательский пейджер в MVC 3 - PullRequest
0 голосов
/ 12 марта 2012

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

Я хочу такую ​​страницу

 <Pager 1 2 3 4 ...>

 <Partial View>

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

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

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

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

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

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

1 Ответ

1 голос
/ 12 марта 2012

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

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>
}
...