RouteTable.Routes.GetVirtualPath () возвращает неправильный маршрут в ASP.NET MVC - PullRequest
1 голос
/ 11 января 2011

Я получил следующие маршруты:

// pennames
routes.MapRoute(
    "pennames", // Route name
    "MyHome/Authors/{action}/{id}", // URL with parameters
    new { controller = "Author", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

// article
routes.MapRoute(
    "article", // Route name
    "MyHome/Articles/{action}/{id}", // URL with parameters
    new { controller = "Article", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

// index
routes.MapRoute(
    "MyHome", // Route name
    "MyHome/{action}/{id}", // URL with parameters
    new { controller = "MyHome", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

Я пытаюсь добавить функциональность подкачки к моему представлению "MyHome / Articles /". Пейджер использует следующий код для получения URL:

var virtualPathData = RouteTable.Routes.GetVirtualPath(this.viewContext.RequestContext, pageLinkValueDictionary);

if (virtualPathData != null)
{
    string linkFormat = "<a href=\"{0}\">{1}</a>";
    return String.Format(linkFormat, virtualPathData.VirtualPath, linkText);
}
else
{
    return null;
}

Проблема в том, что, хотя я запускаю этот код со страницы «MyHome / Articles /», GetVirtualPath всегда возвращает первый маршрут «MyHome / Authors /» и полностью игнорирует префикс «MyHome / Articles /» в маршрут.

Когда я использую ActionLink, он отлично работает, только не из GetVirtualPath.

Есть идеи?

Спасибо.

1 Ответ

0 голосов
/ 07 февраля 2011

Если вы хотите применить нумерацию страниц к своему MyHome / Articles

Вы можете указать жестко заданный путь, например

yourpath = "MyHome / Articles? Page =" + page_number;

и каждый раз, когда вам необходимо получить параметр страницы из представления с помощью этого помощника по разбиению на страницы, доступного для просмотра, или с помощью <% = Html.ActionLink ()%> и передать в него параметр маршрутов.

...