2011-10-14 24 views
15

Gần đây tôi đã thực hiện một số thay đổi đối với dự án MVC 3 của mình.Tại sao Chế độ xem của tôi không bao gồm _Layout.cshtml?

Khi tôi chạy, Chế độ xem không bao gồm bất kỳ tệp nào như Site.css. Khi tôi gỡ lỗi IndexController() ActionController của tôi, nó nhảy trực tiếp đến Chế độ xem, mà không bao gồm các tệp như _Layout.cshtml. Vì vậy, tôi chỉ nhận được một View với nền trắng, không có menu, vv

Các tập tin Global.asax.cs chứa đoạn mã sau:

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 = "" } 
    ); 
} 

Trả lời

37

Nếu điểm ngắt trong hành động điều khiển của bạn bị trúng tuyến đường có thể sai nhưng đó không phải là lý do khiến _Layout.cshtml không tải.

Một số điều cần kiểm tra:

  • là quan điểm của bạn sử dụng View() và không PartialView() (sau này bỏ qua ViewStart.cshtml và do đó _Layout.cshtml).
  • Gần đây bạn đã chuyển _Layout.cshtml/Bạn đã đổi tên thành Shared (hoặc đã tạo một SharedController)?
  • Chế độ xem của bạn có bao gồm nội dung như thế này ở trên cùng có thể hủy kích hoạt _Layout.cshtml không?

    @{ 
        Layout = ""; 
    } 
    
  • _ViewStart.cshtml của bạn vẫn tồn tại với mã sau kích hoạt _Layout.cshtml?

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

ViewStart bị thiếu, cảm ơn – Kenci

+0

Tôi vẫn có chế độ xem, nhưng hôm nay dự án của tôi đã dừng bố cục tải ... wth. –

+0

Phát ngay! Thiếu '_ViewStart.cshtml' của tôi. – Martin

1

Di chuyển của bạn "Default2" đường lên trên tuyến đường của bạn "Default" .

các tuyến đường mặc định là chung chung nhiều hơn như vậy Default2 phải là đầu tiên

cũng có, bên trong quan điểm của bạn chắc chắn rằng bạn đang xác định bố trí sử dụng

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

Cảm ơn bạn đã giúp đỡ. Nó bằng cách nào đó biến mất: S Làm việc ngay bây giờ! – Kenci

+0

viewStart nên chăm sóc điều này mặc dù. –

1

Nghe có vẻ như bạn đã không còn phiền thuộc tính bố cục trong chế độ xem chỉ mục của bạn.

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

Tôi biết điều này đã được giải quyết nhưng đối với tôi (MVC 5) Tôi đã phải thêm dòng mã này trước khi xem thường xuyên hiển thị nội dung của nó

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

lý do bỏ phiếu xuống? Ít nhất là giải thích trước khi bỏ phiếu xuống !! – Computer

Các vấn đề liên quan