2011-09-28 8 views
5

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ą?

+0

Właśnie w celu wyjaśnienia, można dodać kod do 'ContentController' –

+0

@MatthewAbbott - To wszystko jest generowane przez rusztowania. Udało mi się rozwiązać ten problem, wdrażając odpowiedź Nathana. – quakkels

Odpowiedz

11

to dlatego, że istnieje fizyczny folder o nazwie content. posiadanie kontrolera o tej samej nazwie co folder fizyczny prawdopodobnie będzie miało niekorzystny wpływ na twoją stronę.

+0

Huh ... to ma sens. Spróbuję zmienić nazwę kontrolera. – quakkels

+0

Dzięki ... takie proste. – quakkels

+0

Po prostu wpadłem na to po uderzeniu głową o ścianę za abit, dziękuję za odpowiedź! – Wil

0

spróbuj dodać następujące definicje do swoich tras:

routes.RouteExistingFiles = true; 
+0

czy nie będzie musiał wtedy konfigurować tras lub ignorować tras dla swoich rzeczywistych plików zawartości? –

+0

Założę się, że to zadziała. Ale myślę, że główny problem został zarysowany przez @nathangonzalez. – quakkels

Powiązane problemy