ASP.NET MVC actionlink вводит в них текущие переменные? - PullRequest
1 голос
/ 22 сентября 2009

В настоящее время у меня есть MVC-проект среднего размера с несколькими контроллерами, которые поддерживают подкачку через помощника подкачки.

это работает так

routes.MapRoute(
                "TabletsPaged",
                "Tablet/Page/{page}",
                new { controller = "Tablet", action = "Index" }
            ); //paging in the tablet controller

на главной странице у меня есть навигация со ссылкой на все действия по индексам моих различных контроллеров. По какой-либо причине, когда я меняю страницы на любом из моих контроллеров, мои навигационные ссылки становятся / controller / page / x, где x - текущая страница, которую я просматриваю, а когда в домашнем контроллере я ссылки просто отображаются как / controller. Есть идеи, почему это происходит?

1 Ответ

2 голосов
/ 22 сентября 2009

Механизм маршрутизации берет значения переменных-заполнителей в текущем маршруте (представление, в котором вы находитесь) и автоматически добавляет их ко всем ссылкам, созданным в этом представлении, которые также содержат эти переменные.

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

ActionLink ("Tablet", "Index", new { page = "" });

К вашей проблеме со странной ссылкой: посмотрите на подпись ActionLink - вы вводите неверную последовательность параметров.

Для использования используется перегрузка:

ActionLink (string linkText, string actionName, object routeValues,
            object htmlAttributes);

В качестве третьего параметра он ожидает RouteValues, но вместо этого получает строку, в то время как четвертый параметр ожидает htmlAttributes, и вы передаете ему значения маршрута.

Использовать другую перегрузку:

ActionLink (string linkText, string actionName, string controllerName,
            object routeValues, object htmlAttributes);

И просто дайте ему "null" в качестве пятого аргумента, если вы не устанавливаете html-атрибуты.

ActionLink("Patients", "Index", "Patient", new {page = ""}, null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...