Использование MvcContrib.Pagination с MembershipUser.GetAllUsers - PullRequest
1 голос
/ 07 августа 2009

Я не могу заставить пейджер работать на моей странице ListUsers. Метод в моем контроллере выглядит так:

public ActionResult ListUsers(int? page, int? pageSize) {   
    int totalItems;
    var members = Membership.GetAllUsers(page ?? 1, pageSize ?? 50, out totalItems);
    ViewData["Users"] = ToList<MembershipUser>(members);
    return View();
}

А моя страница aspx выглядит следующим образом:

<% var users = ViewData["Users"] as List<MembershipUser>; %>

<% foreach( var user in users ){ %>
           Email is: <%= user.Email %>
<% } %>

<%= Html.Pager((IPagination)ViewData["Users"])%>

Я получаю ошибку

"Невозможно привести объект типа 'System.Collections.Generic.List`1 [System.Web.Security.MembershipUser]' к типу 'MvcContrib.Pagination.IPagination'."

Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 07 августа 2009

Вы не можете передать список в Html.Pager. Вы должны передать то, что реализует IPagination. Вы можете создать свой собственный класс или класс LazyPagination - очень легко с помощью метода расширения .AsPagination ().

См., Например, http://davidhayden.com/blog/dave/archive/2009/06/25/MvcContribGridPagerHelpers.aspx

0 голосов
/ 07 августа 2009

Я не использую Html.Grid в моем представлении. Я получил его на работу, но не уверен, что это лучший способ кода. Вот оно:

(мой контроллер)

<code>public ActionResult ListUsers(int? page, int? pageSize) {</p>

<p>int totalItems;
  var members = Membership.GetAllUsers(page ?? 0, pageSize ?? 50, out totalItems);
  ViewData["Users"] = ToList(members);
  // a second variable
  var members2 = Membership.GetAllUsers();
  ViewData["Users2"] = ToList(members2).AsPagination(page ?? 1, 50);
  return View();
}

(мой взгляд)

<code>
<%  var users = ViewData["Users"] as List; %></p>

<p><% foreach( var user in users ){ %>
   UserName: <%= user.UserName %>
   Email: <%= user.Email %>
<% } %>
//the pager
<%= Html.Pager("Users2")%>

Обновление: Пейджинг отключен на 1. При нажатии «Далее» на странице по умолчанию страница будет пропущена. Как это исправить? Метод .AsPagination () не принимает 0 И запуск .GetAllUsers () с 1 не будет отображать фактическую первую страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...