none
Remover controlador de URL en MVC 5 RRS feed

  • Pregunta

  • Hola a todos, necesito quitar el controller 'Home' de los URL de mi proyecto, actualmente aparece de esta forma: example.com/Home/contacto y quiero que se vea así: example.com/contacto (también para otros apartados como servicios, nosotros, galería, etc)

    He intentado eliminar el {controller} que aparece antes de {action}/{id} en el código de RouteConfig.cs de esta forma:

    namespace myproject
    {
        public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    "Default",
                    "{action}/{id}",
                    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
            }
        }
    }

    Y el controller desaparece del URL pero los siguientes enlaces a Login y Manage ya no funcionan:

    @Html.ActionLink("Iniciar sesión", "Login", "Account")
    
    @Html.ActionLink("Administrar", "Index", "Manage")

    ¿Cómo podría lograr que funcionen esos enlaces sin que se muestre el controller 'Home' en las URL?





    miércoles, 30 de septiembre de 2015 15:09

Respuestas

  • >>¿tendría que crear un controller para cada apartado?

    entiendo que si

    >>¿y como haría para los apartados del tipo example.com/consultoria-tic ?

    crearias un controler para este consultoria-tic

    >>¿no causarían problemas los guiones en la URL?

    si la definicion de la clase permite guiones entonces deberia dejarte

    >>pero no logro que funcione en mi caso.

    lo que planteo simple de implementar y funciona, quizas debas crear varios controllers pero no veo cual seria el problema

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 30 de septiembre de 2015 17:22

Todas las respuestas

  • hola

    pero porque no creas un controller de nombre ContactoController y dentro defines un action de nombre Index

    entonces podrias escribir como lo mencionas

    public class ContactoController : Controller{
    
        public ActionResult Index(){
    
           return View();
    
       }
    
    }

    con esto la url quedaria como lo que planteas

    no cambiarias nada en el MapRoute dejalo como estaba originalmente

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 30 de septiembre de 2015 16:24
  • Entonces ¿tendría que crear un controller para cada apartado? (que podrían ser unos 20)... ¿no habría otro método más simple? ¿y como haría para los apartados del tipo example.com/consultoria-tic ? ¿no causarían problemas los guiones en la URL?

    En otro foro he leído una posible solución (cambiando solo los MapRoute): http://stackoverflow.com/questions/3337372/asp-net-mvc-removing-controller-name-from-url pero no logro que funcione en mi caso.



    miércoles, 30 de septiembre de 2015 17:12
  • >>¿tendría que crear un controller para cada apartado?

    entiendo que si

    >>¿y como haría para los apartados del tipo example.com/consultoria-tic ?

    crearias un controler para este consultoria-tic

    >>¿no causarían problemas los guiones en la URL?

    si la definicion de la clase permite guiones entonces deberia dejarte

    >>pero no logro que funcione en mi caso.

    lo que planteo simple de implementar y funciona, quizas debas crear varios controllers pero no veo cual seria el problema

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    miércoles, 30 de septiembre de 2015 17:22