Usuário com melhor resposta
Dúvida sobre routing...

Pergunta
-
Olá!
Tenho feito vários projetos em MVC e nunca havia alterado o Global.asax para fazer nenhuma alteração. No projeto atual, tenho vários pequenos cadastros e ao invés de chamar a URL: http://localhost:1829/nomedocadastro/create , /edit/ (etc...) eu gostaria de adicionar a palavra "cadastros" na frente do nome do meu controller na URL, ficando assim:
http://localhost:1829/cadastros/nomedocadastro1/create
http://localhost:1829/cadastros/nomedocadastro2/create
etc...
Ou seja, eu quero que o roteamento funcione com ou sem a palavra "cadastros" na frente do nome do controller, entendeu ? Para o meu cliente, fica mais fácil ver a URL com esta palavra.
Tenho que adicionar uma nova rota para cada novo controller ou posso fazer de uma forma genérica ?
Att,
Michel Wilker
Michel Wilker Prado
Respostas
-
So corrigindo o exemplo do Ivan que não atende a os cenarios que ele deseja, segue o codigo que contempla a URL com ou sem Cadastros na frente:
A diferença é que eu coloquei prefixo ao inves de cadastros.using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace MvcApplication1 { public class MvcApplication : HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "DefaultComPrefixo", "Prefixo/{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); } } }
Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
Twitter: Me siga!!
Blog:http://albertomonteiro.net/- Sugerido como Resposta Alberto Monteiro terça-feira, 19 de abril de 2011 12:22
- Marcado como Resposta André Borges MedeirosModerator segunda-feira, 9 de maio de 2011 16:02
Todas as Respostas
-
Bom dia Michel!
Faça a seguinte modificação no seu Global.asax:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "Cadastros/{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); }
Abraços!
MCPD, MCSD, MCAD, MCDBA, MCP, colaborador do 100loop e membro do grupo DotNetRaptors.- Editado Ivan Paulovich sábado, 16 de abril de 2011 16:49 código
- Sugerido como Resposta André Borges MedeirosModerator segunda-feira, 18 de abril de 2011 13:43
-
So corrigindo o exemplo do Ivan que não atende a os cenarios que ele deseja, segue o codigo que contempla a URL com ou sem Cadastros na frente:
A diferença é que eu coloquei prefixo ao inves de cadastros.using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace MvcApplication1 { public class MvcApplication : HttpApplication { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "DefaultComPrefixo", "Prefixo/{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); } } }
Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
Twitter: Me siga!!
Blog:http://albertomonteiro.net/- Sugerido como Resposta Alberto Monteiro terça-feira, 19 de abril de 2011 12:22
- Marcado como Resposta André Borges MedeirosModerator segunda-feira, 9 de maio de 2011 16:02