GetVirtualPath не имеет никакого смысла - PullRequest
0 голосов
/ 09 марта 2010

Может кто-нибудь объяснить, почему этот код с данными маршрутами возвращает первый маршрут?

routes.MapRoute(null, "user/approve", new { controller = "Users", action = "Approve" }),
routes.MapRoute(null, "user/{username}", new { controller = "Users", action = "Profile" }),
routes.MapRoute(null, "user/{username}/{action}", new { controller = "Users" }),
routes.MapRoute(null, "user/{username}/{action}/{id}", new { controller = "Users" }),
routes.MapRoute(null, "search/{query}", new { controller = "Artists", action = "Search", page = 1 }),
routes.MapRoute(null, "search/{query}/{page}", new { controller = "Artists", action = "Search" }),
routes.MapRoute(null, "music", new { controller = "Artists", action = "Index", page = 1 }),
routes.MapRoute(null, "music/page/{page}", new { controller = "Artists", action = "Index" })

var pageLinkValueDictionary = new RouteValueDictionary(this.linkWithoutPageValuesDictionary);
pageLinkValueDictionary.Add("page", pageNumber);
var virtualPathData = RouteTable.Routes.GetVirtualPath(this.viewContext.RequestContext, pageLinkValueDictionary);

Здесь GetVirtualPath всегда возвращает пользователя / одобрить, хотя в маршруте нет параметра {page}. Кроме того, все работает, как и ожидалось, без первого маршрута.

Я нашел эту ссылку http://www.codeplex.com/aspnet/WorkItem/View.aspx?WorkItemId=2033, но она не очень помогла. Похоже, что GetVirtualPath не был реализован с учетом больших коллекций маршрутов.

Я использую ASP.Net MVC 1.0.

Обновление. Я могу изменить маршруты и получить соответствующие результаты. Но мне бы очень хотелось понять, почему на Земле он вообще выбирает маршрут пользователя / одобрения.

Ответы [ 2 ]

1 голос
/ 09 марта 2010

Попробуйте добавить действие и контроллер в RouteValueDictionary

0 голосов
/ 31 марта 2010

Используйте эту ссылку, чтобы понять, почему она работает так, как работает http://www.codeplex.com/aspnet/WorkItem/View.aspx?WorkItemId=2033.

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

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