2012-04-26 118 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