Razor Nested Layouts
Na View Engine padrão do ASP.Net temos a opção de utilizar as Nested Master Pages, na View Engine Razor também podemos fazer algo semelhante, porém não a essa opção visível (Nested Layout).
A solução é bem simples:
- Criar o arquivo de Layout “pai”.

É um arquivo de layout comum do Razor, pode ter @sections e tudo mais. - Criar o arquivo de Layout filho:

Esse Layout filho que tem o detalhe fazer a referência ao pai:@{
Layout = "~/Shared/_Layout.cshtml";
}
<div id="menu">...
Note que o Layout filho também possui um@RenderBody()que é onde a View vai ser renderizada. - Crie sua View normalmente, referenciando o Layout filho.
- Você pode continuar tendo Views que referenciam o Layout pai.
- Você pode ter quantos filhos quiser (cuidado!).
- Você pode colocar um Layout filho como padrão para todas as Views no _ViewStart.cshtml (ou usar o pai).
- Cuidado com as @sections !
Por que eu usei isso:
- Meu Layout pai possui somente referências a JavaScripts e CSSs, e o rodape. Apenas uma View herda dele diretamente: LogOn.
- Após tenho diversos “subsites”, cada um com seu Layout próprio.
Não é uma boa solução carregar sempre todo o JS e o CSS, mas como é uma aplicação de Intranet não fez muita diferença e me poupou trabalho.