2012-04-26 30 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 はありませんはレイアウト仕様を持っていますか明示的にed。

_Red.cshtmlレイアウトを使用してIndex.cshtmlをレンダリングしようとすると、_Layout.cshtmlも階層的に適用されます。だから基本的にはネストされたテンプレートチェーン_Layout-> Red-> Our page

_Blue.cshtmlを使ってIndex.cshtmlをレンダリングしようとすると_Layout.cshtmlはで、は適用されません。 私は_Layout.cshtmlが_Blue.cshtmlに_viewstartを使って規則に従って適用されることを期待していました。代わりに_Blue.cshtmlテンプレートのみが適用されたIndex.cshtmlページが表示されます。

私は間違っていますか?

ありがとうございます!

UPDATE:

コントローラ方法:だから、私はするViewResult、ないするPartialViewResultを返しています

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

    return View("Index"); 
} 

;)

+0

コントローラからViewまたはPartialViewを返送していますか? –

+0

@Chuck Norris:申し訳ありませんが、私は戻ってView( "Index")を返しています。 – Andrey

答えて

3

はい、あなたはあなたの仮定で間違っています。レイアウトが指定されている場合(_Blue.cshtml)、_Viewstartのレイアウトは適用されません。 _Viewstartはデフォルトレイアウトのため、すべてのページで指定する必要はありません。

+0

まあ、レイアウトが指定されていない_Blue.cshtmlに適用されることを期待していました。その後、私のページに_Blue.cshtmlを適用することで、私は両方を得ることを期待していました。そのようには機能しませんか? – Andrey

+0

いいえ、_viewstartのレイアウトページは通常のページにのみ適用され、他のレイアウトページには適用されません。私が正確な行動を記述した文書を見つけることができれば、私はそのリンクを投稿します。 –

関連する問題