Проходная страница для Routelink - PullRequest
0 голосов
/ 27 августа 2009

У меня проблема с включением функции пейджера. По какой-то причине это не нравится, когда я пытаюсь передать текущий индекс страницы +1 на ту же страницу, чтобы он отобразил следующую.

<% if (Model.Users.HasNextPage) { %>

    <%= Html.RouteLink(">>>", "Users", new { page = (Model.Users.PageIndex +1) })%>

    <% } %>

Если я использую только: «>>>», «Пользователи», это работает, хотя функция следующей страницы не работает, поскольку не присваивает следующее значение.

Если я отлаживаю Model.Users.PageIndex, он имеет значение 0 при загрузке страницы (что должно быть).

Каким-то образом ему не нравится «новый» - что-то в конце

У меня есть шведские ошибки, но он жалуется на то, что не нашел путь / маршрут / ссылку на местоположение пользователя или как его установить.

Результат действия выглядит так:

    public ActionResult Users(int? page){
        const int pagesize = 10;

        var pagnatedUsers = new PaginatedList<User>(_us.GetUsers(), page ?? 0, pagesize);

        return View("Users", new UserAdminEditViewModel { Users = pagnatedUsers });
    }

Спасибо заранее / M

Ответы [ 2 ]

1 голос
/ 28 августа 2009

Я собираюсь угадать «Users» во втором параметре для Html. Предполагается, что ссылка на ссылку на имя действия вашего контроллера. RouteLink фактически не имеет перегрузки (string linkText, string actionName , object routeValues), что, по-видимому, вы пытаетесь предоставить.

Перегрузка, которую вы вызываете, фактически запрашивает routeName во втором параметре, и у вас не определен такой маршрут!

Попробуйте это

Html.RouteLink(">>>", new { controller="Home", action="Users", page = (Model.Users.PageIndex +1) })%>

заменяет ваше фактическое имя контроллера.


Обновление / ответ: я пытался объяснить, почему ваш код не работает должным образом. Действительно, если вместо этого вы используете ActionLink со своими исходными параметрами, это тоже решение - и, вероятно, лучшее решение, поскольку, похоже, вы этого хотите.

RouteLink и ActionLink по сути одинаковы под прикрытием (они оба в конечном итоге вызывают один и тот же базовый код, который фактически генерирует ссылку). Разница только в контексте использования - RouteLink существует для того, чтобы помочь вам генерировать ссылки на основе вашей конфигурации маршрутизации (например, по имени маршрута), а ActionLink существует для ссылок, основанных на действиях вашего контроллера (например, по имени действия). И есть много совпадений, где вы могли бы использовать их обоих одинаково.

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

Я получил этот код RouteLink из примера Nerddinner. И теперь, когда я переключился на ActionLink вместо RouteLink, он работал.

Не совсем уверен, в чем разница между ActionLink или способом, который описывает Курт.

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