Url Amigável Asp.NET MVC
Estou com uma duvida sobre urls amigáveis, provavelmente é algo simples, se alguém puder me ajudar,
Quando faço uma rota para View Contact do controller Home:
localhost/Home/Contact
routes.MapRoute(
name: "contato",
url: "contato",
defaults: new { controller = "Home", action = "Contact" }
);
Tudo ok, consigo acessar pela a url: localhost/contato, porem para Área que criei para pagina de login não funcionou dessa maneira.
localhost/Admin/Adm/Index ->acessa ok
mas pela rota não acessa
routes.MapRoute(
name: "Login",
url: "login",
defaults: new { controller = "Admin/Adm", action = "Index" }
);
Qual seria o caminho para acessar o controller Adm dentro da Área Admin ? como ficaria essa rota ?
Quando faço uma rota para View Contact do controller Home:
localhost/Home/Contact
routes.MapRoute(
name: "contato",
url: "contato",
defaults: new { controller = "Home", action = "Contact" }
);
Tudo ok, consigo acessar pela a url: localhost/contato, porem para Área que criei para pagina de login não funcionou dessa maneira.
localhost/Admin/Adm/Index ->acessa ok
mas pela rota não acessa
routes.MapRoute(
name: "Login",
url: "login",
defaults: new { controller = "Admin/Adm", action = "Index" }
);
Qual seria o caminho para acessar o controller Adm dentro da Área Admin ? como ficaria essa rota ?
Luis Silva
Curtidas 0
Respostas
Pablo Domingues
12/04/2017
Dentro da pasta Areas você deve ter a pasta Admin e dentro da pasta Admin a estrutura de pasta Controllers, Models, Views...
Muito provavelmente você irá encontrar o AdminAreaRegistration.cs dentro da pasta Areas /Admin e nele deverá ser feito o registro de rotas desta área. Não sendo necessário mapear cada área dentro de RouteConfig.cs.
AdminAreaRegistration.cs
RouteConfig.cs
No seu global.asax adicione:
Creio que atenda as suas necessidades. ;)
Muito provavelmente você irá encontrar o AdminAreaRegistration.cs dentro da pasta Areas /Admin e nele deverá ser feito o registro de rotas desta área. Não sendo necessário mapear cada área dentro de RouteConfig.cs.
AdminAreaRegistration.cs
public class AdminAreaRegistration: AreaRegistration { public override string AreaName { get { return "Admin"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Admin_default", "Admin///", new { action = "Index", id = UrlParameter.Optional } ); } }
RouteConfig.cs
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(".axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "//", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
No seu global.asax adicione:
AreaRegistration.RegisterAllAreas(); RouteConfig.RegisterRoutes(RouteTable.Routes);
Creio que atenda as suas necessidades. ;)
GOSTEI 0