Как настроить формат ActionLink для удаления подкаталога?
-
26-09-2019 - |
Вопрос
Скажем, домен, который сопоставлен с моим каталогом хостинга root, является example.com
. Отказ Godaddy сил сопоставление других доменов до подкаталогов корень. Например, мой второй домен, example1.com
, сопоставлен на example.com/example1
.
Я загрузил свой сайт ASP.NET MVC в такой подкаталог, только для того, чтобы обнаружить, что ActionLinks, которые предназначены для навигации, имеют следующий формат:
http://example1.com/example1/Controller/Action
Другими словами, даже когда я использую домен, который сопоставлен в подкаталог, подкаталог по-прежнему используется в URL. Я хочу изменить формат моих действий.
Тем не менее, я заметил, что я также могу получить доступ к тому же пути, собираюсь:
http://example1.com/Controller/Action
(Оставив подкаталог)
Я хочу, чтобы мои накопители автоматически бросают подкаталог, так как не требуется.
Это возможно, не изменив действий в обычные URL?
Решение
Нет, я так не думаю, так как ссылка действий в основном работает, чтобы сделать контроллер / действие. Другая работа вокруг, если у вас установить доступ к серверу, это использовать инструмент перезаписи URL, такими как iirf.codeplex.com, который бесплатный и работает довольно хорошо. Могут быть некоторые другие непреднамеренные последствия с перепишем, в зависимости от того, что вы делаете.
Хет
Другие советы
Вы можете попробовать добавить дополнительные заявления маршрута в свой Global.Asax, в порядке из ваших подкаталоги. Пример:
routes.AddRoute("example1/{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
routes.AddRoute("{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
Я верю, что маршруты проверяются в порядке от Global Asax, чтобы вы могли эффективно направить запрос на правильное место. Однако ваша ссылка все равно будет содержать папку «Пример1» в URL.