none
Dúvida sobre routing... RRS feed

  • 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
    sábado, 16 de abril de 2011 15:28

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:

    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);
        }
      }
    }
    
    A diferença é que eu coloquei prefixo ao inves de cadastros.


    Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
    Twitter: Me siga!!
    Blog:http://albertomonteiro.net/

    terça-feira, 19 de abril de 2011 12:22

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.
    sábado, 16 de abril de 2011 16:46
  • 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:

    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);
        }
      }
    }
    
    A diferença é que eu coloquei prefixo ao inves de cadastros.


    Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
    Twitter: Me siga!!
    Blog:http://albertomonteiro.net/

    terça-feira, 19 de abril de 2011 12:22