Я получил следующие маршруты:
// 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
.
Есть идеи?
Спасибо.