Если я создаю ссылку на действие MVC или действие, например. @Url.Action("Index", "Home")"
Я перенаправляюсь на http://www.example.com, но я хочу, чтобы он перенаправлял на http://www.example.com/Home/Index или http://www.example.com/Home. Есть ли способ явно сделать полный путь? Мои поисковые запросы Google выглядят пустыми.Как заставить MVC маршрутизировать в Home/Index вместо root?
ответ
Url.Action()
использует маршрутизацию для создания URL-адреса. поэтому, если вы хотите изменить его, вы должны изменить это. В настоящее время он говорит, что контроллер по умолчанию - Home
, а действие по умолчанию - Index
. Измените их на что-нибудь еще, и затем он даст вам другой URL-адрес.
Например конфигурация маршрута, вероятно, что-то вроде этого:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Изменение значения по умолчанию ни к чему-либо или удалить их:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional }
);
Обратите внимание, что делает это означает, что ваши страницы будут доступны только по полной линии controller/action
, чтобы вы могли создать целевую страницу и сделать это по умолчанию.
Если вам абсолютно необходимо знать полный URL-адрес действия, вы можете сделать это таким образом. сначала создайте дополнительный маршрут и поместите его внизу конфигурации маршрута. Это никогда не будет использоваться системой по умолчанию:
routes.MapRoute(
name: "AbsoluteRoute",
url: "{controller}/{action}/{id}",
defaults: new { id = UrlParameter.Optional }
);
Затем в коде вы можете назвать это (не уверен, что он доступен в бритве, но это должно быть легко написать вспомогательный метод):
var fullURL = UrlHelper.GenerateUrl("AbsoluteRoute", "Index", "Home", null, null, null, null, System.Web.Routing.RouteTable.Routes, Request.RequestContext, false);
Возможно, вам понадобится создать определенный маршрут для дома/индекса, который предшествует маршруту по умолчанию. Затем вы можете указать маршрут по умолчанию и точку маршрута Home/Index в одно и то же место. Тем не менее, это не перенаправляет вас на главную/индекс, если вы перейдете на базовый маршрут ... так что вам придется добавить перенаправление URL-адресов, либо на уровне IIS (есть настройки для этого), либо вы можете просто добавить код на страницу индекса, чтобы просмотреть URL-адрес и перенаправить на полный URL-адрес.
В качестве альтернативы вы можете удалить контроллер и значения по умолчанию, а затем добавить перенаправление URL-адресов в конфигурацию IIS, чтобы перенаправить вас на полный путь, если они перейдут в корень.
Hmm интересный способ. Думаю, я понял это, используя чистый MVC, хотя все еще получает +1 от меня. – DavidG
- 1. Как маршрутизировать страницы, используя текст вместо идентификаторов?
- 2. Как заставить команду bdutil запускать как root?
- 3. Как маршрутизировать joomla
- 4. MVC Routing пытается маршрутизировать по виртуальному каталогу
- 5. Как мне маршрутизировать POST и GET в Mvc 5
- 6. Jenkins работает как root вместо Jenkins
- 7. Как маршрутизировать ссылку в codeigniter?
- 8. Как «маршрутизировать» методы PHP?
- 9. Как правильно маршрутизировать контроллеры mvc внутри разных папок PARENT?
- 10. Как динамически маршрутизировать страницы?
- 11. Как заставить% 20 вместо + в System.Net.WebUtility.UrlEncode
- 12. spring mvc website on root ("/")
- 13. Можно ли маршрутизировать только определенные статические файлы в MVC?
- 14. карта Html.BeginForm маршрутизировать
- 15. Как маршрутизировать динамический контроллер/шаблон действия в MVC 4 -Routing для ASP.net MVC 4
- 16. Поддомен перенаправляется на root в MVC 3
- 17. Как заставить session_id в ASP.Net MVC
- 18. использовать root web.config вместо подпапок web.config
- 19. Как динамически маршрутизировать потоки RxJS
- 20. Root web.config используется вместо сайта web.config
- 21. FatFree, как маршрутизировать restfull звонки?
- 22. Приложение Openshift Spring - как заставить его работать на ROOT?
- 23. Как заставить скачать вместо открытия файла?
- 24. Как заставить Breeze запрашивать метаданные $ вместо метаданных?
- 25. Как заставить Джерси использовать SLF4J вместо JUL?
- 26. Как заставить php отображать нули вместо -7?
- 27. Как заставить текст изображения изображения вместо изображения?
- 28. Как заставить OpenSSL использовать http вместо https?
- 29. Как заставить сервер использовать startup.cs вместо Global.asax.cs
- 30. Как заставить Composer использовать https: // вместо git: //?
Кажется разумным, но мне нужна домашняя страница как целевая страница. Разве это невозможно? –
ОК, я обновлю, но ... это, наверное, плохая идея, особенно для SEO. – DavidG
Это для сайта интрасети, поэтому SEO не вызывает беспокойства. –