2012-04-26 114 views
2

我有以下項目結構:_ViewStart.cshtml與嵌套佈局

Project structure

_ViewStart.cshtml:

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

_Red.cshtml:

@{ 
    ViewBag.Title = "Red"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

_Blue.cshtml 不是有一個版面規格明確地編輯。

現在,如果嘗試使用_Red.cshtml佈局呈現Index.cshtml,_Layout.cshtml也會分層應用。所以基本上我們有一個嵌套的模板鏈_Layout->紅 - >我們的頁面

但是,如果我嘗試使用_Blue.cshtml渲染Index.cshtml,_Layout.cshtml不適用。 我期待_Layout.cshtml將按照慣例使用_viewstart應用於_Blue.cshtml。相反,我只用_Blue.cshtml模板來獲取Index.cshtml頁面。

我錯在我的假設?

在此先感謝!

UPDATE:

控制器的方法:

public ActionResult Index() 
{ 
    ViewBag.Message = "Welcome to ASP.NET MVC!"; 

    return View("Index"); 
} 

所以,我回來的ViewResult,不PartialViewResult;)

+0

您是否從控制器返回View或PartialView? – 2012-04-26 08:51:02

+0

@Chuck Norris:對不起,忘了提及它,我正在返回查看(「索引」) – Andrey 2012-04-26 08:53:02

回答

3

是的,你是錯在你的假設。如果指定了佈局(_Blue.cshtml),_Viewstart中的佈局將不會被應用。 _Viewstart用於默認佈局,因此您無需在每個頁面上指定它。

+0

嗯,我期待它被應用到_Blue.cshtml,其中沒有指定佈局。之後,通過將_Blue.cshtml應用到我的頁面上,我期待能夠同時獲得這兩個。它不以那種方式工作? – Andrey 2012-04-26 09:30:30

+0

不,_viewstart中的佈局頁面僅適用於普通頁面,而不適用於其他佈局頁面。如果我能找到描述確切行爲的文檔,我會發布鏈接。 – 2012-04-26 10:29:44