Como faço para me livrar do Home no ASP.Net MVC?
-
08-06-2019 - |
Pergunta
Eu sei que este site foi escrito usando ASP.Net MVC e não vejo "/Home" no URL.Isso me prova que isso pode ser feito.Qual rota especial e eu preciso?
Solução
Basta alterar "Home" para uma string vazia.
routes.MapRoute(
"Home",
"",
new { action = Index, controller = Home }
);
Outras dicas
Se você estiver executando no IIS 7, poderá simplesmente excluir o arquivo Default.aspx que vem com o ASP.NET MVC (supondo que você esteja executando no Preview 3 ou superior).Esse arquivo foi necessário devido a um problema com o Cassini que foi corrigido no .NET 3.5 SP1.Para mais detalhes confira:
http://haacked.com/archive/2008/04/10/upcoming-changes-in-routing.aspxehttp://haacked.com/archive/2008/05/12/sp1-beta-and-its-effect-on-mvc.aspx
Na verdade, gosto de ter todos os meus métodos de controlador doméstico na raiz do site.Assim:/sobre, /contato, etc.Acho que sou exigente.Eu uso uma restrição de rota simples para fazer isso. Aqui está minha postagem no blog com um exemplo de código.
eu adicionaria
routes.MapRoute("NoIndex", "{action}", new { controller = "Home", action = "Index" });
em RouteConfig.cs
Foi isso que fiz para me livrar de Home.Ele tratará todas as rotas com apenas um especificador como Home/Action e qualquer rota com dois como Controller/Action.A desvantagem é que agora o controlador precisa ter um índice explícito (/Controller! = /Controller/Index), mas pode ajudar você ou outras pessoas.
routes.MapRoute(
"Default",
"{action}",
new { controller = "Home", action = "Index" }
);
routes.MapRoute(
"Actions",
"{controller}/{action}",
new { }
);
No IIS 7, você pode simplesmente excluir o arquivo Default.aspx que vem com o ASP.NET MVC (supondo que você esteja executando o Preview 3 ou superior).Esse arquivo foi necessário devido a um problema com o Cassini que foi corrigido no .NET 3.5 SP1.
Para mais detalhes confira:
Próximas mudanças no roteamento e .NET 3.5 SP1 Beta e seu efeito no MVC