Mam zupełnie nowy projekt asp.net mvc 3. W żaden sposób nie zmodyfikowałem tras. Mam kontroler o nazwie PageController
i inne wywołanie kontrolera ContentController
.Dlaczego w ASP.NET MVC 3 domyślna trasa nie działa dla kontrolera o nazwie "ContentController"?
Po przejściu do domeny.com/Page akcja indeksu na kontrolerze stron zostanie wykonana zgodnie z oczekiwaniami i wyświetli widok indeksu.
Podczas przeglądania domeny domain.com/Content pojawia się błąd 404. Jeśli przejdę do domeny.com/Content/Index, to działa dobrze.
Jak rozwiązać problem z tą pojedynczą trasą?
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
Próbowałem dodanie dodatkowej trasy:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Content", // Route name
"Content/{action}/{id}", // URL with parameters
new { controller = "Content", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
Ale dodatkowa trasa nie zmieni zachowania aplikacji.
Co może być przyczyną?
Właśnie w celu wyjaśnienia, można dodać kod do 'ContentController' –
@MatthewAbbott - To wszystko jest generowane przez rusztowania. Udało mi się rozwiązać ten problem, wdrażając odpowiedź Nathana. – quakkels