2011-10-14 18 views
15

Niedawno wprowadziłem kilka zmian w moim projekcie MVC 3.Dlaczego mój widok nie zawiera _Layout.cshtml?

Po uruchomieniu widoki nie zawierają żadnych plików, takich jak Site.css. Kiedy debuguję mój Index() ActionController, przeskakuje on bezpośrednio do widoku, bez dołączania plików takich jak _Layout.cshtml. Więc ja po prostu widok z białym tle, bez menu itp

Plik Global.asax.cs zawiera następujący kod:

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(
     "Default2", // Route name 
     "{controller}/{action}/{id}/{page}", // URL with parameters 
     new { controller = "Survey", action = "DisplayQuestions", id = "", page = "" } 
    ); 
} 

Odpowiedz

37

Jeśli punkt przerwania w akcji kontrolera jest hit trasy może być źle, ale to nie jest powód, dla _Layout.cshtml nie załadować.

Kilka rzeczy do sprawdzenia:

  • Czy Twój widok używając View() i nie PartialView() (ten ostatni ignoruje ViewStart.cshtml a więc _Layout.cshtml).
  • Czy ostatnio przenosiłeś swój _Layout.cshtml/Czy zmieniłeś nazwę na Shared (lub utworzyłeś SharedController przez przypadek)?
  • Czy Twój widok zawiera coś takiego na górze, które dezaktywuje _Layout.cshtml?

    @{ 
        Layout = ""; 
    } 
    
  • Czy Twój _ViewStart.cshtml nadal istnieć z następującego kodu który aktywuje _Layout.cshtml?

    @{ 
        Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 
    
+0

Brakowało ViewStart dzięki – Kenci

+0

Nadal mam viewstart, ale właśnie dzisiaj mój projekt przestał ładować układ ... wth. –

+0

Spot na! Brakuje mojego '_ViewStart.cshtml'. – Martin

1

Najedź „Default2” Trasa się powyżej swojej trasie „Default” .

trasa domyślna jest bardziej ogólne więc Default2 powinna być pierwszy

również wewnątrz twoje poglądy upewnij się, że jesteś określający układ używać

@{ 
    Layout = "yourlayoutpage.cshtml" 
} 
+0

Dziękuję za pomoc. To jakoś zniknęło: S Działa teraz! – Kenci

+0

viewStart powinien to jednak rozwiązać. –

1

Brzmi jakbyś pozbył właściwości layoutu w widoku indeksu.

@{ 
Layout = "~/Views/Shared/_Layout.cshtml" 
} 
-3

Znam ten został rozwiązany, ale dla mnie (MVC 5) musiałem dodać poniższy wiersz kodu przed regularnym widoku wyświetlona jego zawartość

public ActionResult Index() 
{ 
    return View(); 
} 
+2

dlaczego głosowanie w dół? Przynajmniej wyjaśnij przed głosowaniem w dół !! – Computer

Powiązane problemy