Mam obszar w mojej aplikacji internetowej o nazwie "Admin".
Więc, http://localhost.com/Admin przechodzi do kontrolera macierzystego i akcji indeksu w obszarze administracyjnym.
Jednak chcę mieć możliwość uderzenia kontrolera administratora domeny i akcji indeksu za pomocą następującego adresu URL:
Mam to jako moją próbę:
routes.MapRoute(
"HelloPage",
"Hello/{controller}/{action}",
new{area= "Admin", controller = "Home", action = "Index"},
new[] { typeof(Areas.Admin.Controllers.HomeController).Namespace });
Jak widzisz, określam przestrzeń nazw i obszar, ale dostaję tylko błąd routingu:
Widok "Index" lub jego wzorzec nie został znaleziony lub żaden mechanizm wyświetlania nie obsługuje szukanych lokalizacji.
To nie jest wyszukiwanie w obszarze administracyjnym.
Jakieś pomysły?
Odpowiedzi:
5 dla odpowiedzi № 1Spróbuj tego:
routes.MapRoute(
"HelloPage",
"Hello/{controller}/{action}/{id}",
new { area = "Admin", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
A następnie dodaj to do działania kontrolera administracyjnego:
if (!this.ControllerContext.RouteData.DataTokens.ContainsKey("area"))
{
this.ControllerContext.RouteData.DataTokens.Add("area", "Admin")
}
Możesz Sprawdź tutaj dla dalszej dokumentacji.
4 dla odpowiedzi nr 2
Problem polegał na tym, że wyznaczałem trasę w Global.asax.
Powinienem był ustawić go w obszarze Rejestracja w obszarze administracyjnym. Kiedy to zrobiłem, problem został naprawiony.