Как настроить формат ActionLink для удаления подкаталога? - PullRequest
3 голосов
/ 09 июня 2010

Допустим, домен, который сопоставлен с моим корневым каталогом хостинга, - example.com. GoDaddy форсирует сопоставление других доменов с подкаталогами корня. Например, мой второй домен, example1.com, сопоставлен с example.com/example1.

Я загрузил свой сайт ASP.NET MVC в такой подкаталог, но обнаружил, что ссылки ActionLink для навигации имеют следующий формат:

http://example1.com/example1/Controller/Action

Другими словами, даже когда я использую домен, который сопоставлен с подкаталогом, подкаталог все еще используется в URL. Я хочу изменить формат моих ссылок ActionLink.

Однако я заметил, что могу также получить доступ к тому же пути, перейдя по адресу:

http://example1.com/Controller/Action

(опуская подкаталог)

Я хочу, чтобы мои ActionLinks автоматически удаляли подкаталог, поскольку это не требуется.

Возможно ли это без изменения ссылок ActionLink на обычные URL-адреса?

Ответы [ 2 ]

1 голос
/ 09 июня 2010

Вы можете попробовать добавить дополнительные операторы маршрута в ваш 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 });

Я полагаю, что маршруты проверяются в порядке от глобального asax, поэтому вы можете эффективно направить запрос в нужное место. Однако ваша ссылка по-прежнему будет содержать папку «example1» в URL.

1 голос
/ 09 июня 2010

Нет, я так не думаю, так как ссылка действия в основном работает для рендеринга контроллера / действия. Другой обходной путь, если у вас есть доступ к установке для сервера, это использование инструмента перезаписи URL-адресов, такого как iirf.codeplex.com, который бесплатный и работает довольно хорошо. Однако при переписывании могут возникнуть и другие непредвиденные последствия, в зависимости от того, что вы делаете.

НТН.

...