2011-10-14 22 views
15

我最近對MVC 3項目做了一些修改。爲什麼我的視圖不包括_Layout.cshtml?

當我運行它時,視圖不包含任何文件,如Site.css。 當我調試我的Index()ActionController時,它直接跳轉到視圖,而不包括像_Layout.cshtml這樣的文件。所以,我只是得到一個白色背景,無菜單等視圖

的的Global.asax.cs文件包含以下代碼:

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

回答

37

如果在你的控制器動作斷點被擊中的路線可能是錯的,但是這不是對_Layout.cshtml不加載一個原因。

有幾件事情要檢查:

  • 是使用view(),而不是PartialView()視圖(後者忽略ViewStart.cshtml等等_Layout.cshtml)。
  • 您最近是否移動了_Layout.cshtml /您是否將其重命名爲Shared(或者意外創建了SharedController)?
  • 您的視圖是否包含類似於頂部的東西,會禁用_Layout.cshtml?

    @{ 
        Layout = ""; 
    } 
    
  • 貴_ViewStart.cshtml仍與下面的代碼激活_Layout.cshtml存在嗎?

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

ViewStart失蹤謝謝 – Kenci

+0

我仍然有viewstart,但就在今天我的項目停止加載佈局... wth。 –

+0

現貨!我的'_ViewStart.cshtml'丟失。 – Martin

1

移動你的「默認設置2」路線你「默認」路線以上。

默認路徑更加通用的,所以默認設置2應該是第一

還,裏面你的意見,確保你指定的佈局使用

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

謝謝你的幫助。它不知何故消失了:S現在有用! – Kenci

+0

viewStart應該照顧這個。 –

1

這聽起來像你已經擺脫了索引視圖中的佈局屬性。

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

我知道這已經解決了,但對我來說(MVC 5)我有常規視圖前加入這行代碼顯示其內容

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

爲什麼要投票?至少在投票前解釋一下! – Computer

相關問題