/ / Jak korzystać z MapRoute z obszarami w MVC3 - c #, asp.net-mvc-3, asp.net-mvc-routing, asp.net-mvc-3-obszary

Jak korzystać z MapRoute z obszarami w MVC3 - c #, asp.net-mvc-3, asp.net-mvc-routing, asp.net-mvc-3-obszary

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:

http://localhost.com/Hello

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 № 1

Spró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.