« Seções — ASP.NET MVC
November 1, 2014 • ☕️ 1 min read
Quando criamos uma Master Page o principal objetivo é não duplicar código, mas nem todos os elementos de uma Master Page vão ser usadas nas páginas que a herdam.
Exemplo: A Master Page contém um Side Bar mas na página de Contato não é necessário popular essa div. Quando isso ocorre na página _Layout dividimos as divs em Seções:
<div id=”sidebar”>@RenderSection(“Nome da Seção”, true)</div>
O segundo parâmetro é opcional e o padrão é verdadeiro, ele diz se é obrigatório a view que herda implementar aquela seção.
O código pra implementar a seção na view é:
@section NomeDaSecao{// contéudo}
Quando divimos o conteúdo em seções raramente precisamos usar o o @RenderBody, mas é possível usa-lo da mesma forma. Ele irá renderizar qualquer contéudo que não esteja dentro das seções no lugar onde foi inserido na _Layout.
Para verificar se a seção foi definida, na _Layout fazemos a seguinte condição
@if(IsSectionDefined(“Nome”){<div id=”sidebar”>@RenderSection(“Nome da Seção”, false)</div>}
Assim a div só será renderizada se a seção for definida.
Para não precisar ficar escrevendo em toda view o link para a MasterPage (_Layout), podemos colocar na _ViewStart, todos os códigos que todas as views vão ter em comum.