Как вставить маршрут в начало RouteCollection

#asp.net-mvc #asp.net-mvc-routing

#asp.net-mvc #asp.net-mvc-маршрутизация

Вопрос:

Мне нужно вставить маршрут во время обработки приложения mvc. Я застрял, потому что я могу использовать MapPageRoute только для добавления нового маршрута в конец таблицы маршрутов, и я могу использовать Insert для добавления маршрута в начало коллекции, но в этом случае я не могу определить это имя маршрута, поэтому я не могу управлять им в будущем.

Итак, вопрос: существует ли какая-либо возможность добавить маршрут с определенным именем в начало таблицы маршрутов?

Кто-нибудь знает?

p.s. сопоставлять до конца и использовать обратное — плохая идея.

Комментарии:

1. Можете ли вы привести пример того, почему вы не будете знать маршруты заранее?

2. Администратор сайта должен иметь возможность добавлять новые псевдонимы для некоторых страниц. Наиболее очевидным решением является использование маршрутов

Ответ №1:

Вы можете использовать комбинацию Map и insert. Сопоставление маршрута возвращает объект Route. Вы можете отобразить маршрут, немедленно удалить его, а затем вставить вот так:

 Route r = routes.MapRoute(
                                "SomeName", // Route name
                                "{controller}/{action}/{id}", // URL with parameters
                                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
                            );
routes.Remove(r);
routes.Insert(0, r);
  

В результате вы получите именованный маршрут в верхней части вашей таблицы маршрутов.

Комментарии:

1. пройдите, чтобы попробовать это … … это не работает, name не является свойством маршрута, это ключ, который удаляется вместе с удаленным маршрутом.