ASP .NET MVC - Diferentes maneiras de renderizar layouts


Em uma aplicação ASP .NET MVC , os layouts são como as Master Pages usadas nas aplicações ASP .NET Web Forms. Eles nos ajudam a manter um interface com o usuário consistente através das views na aplicação ASP .NET MVC.

Da mesma forma que as master pages, os layouts podem conter arquivos CSS, JQuery comuns através de múltiplas view e ou ou mais placeholders para os quais as Views fornecem conteúdo.

Com ASP .NET MVC, à nível de aplicação nos temos o arquivo _ViewStart.cshtml/_ViewStart.vbhtml na pasta Views usado para definir a página padrão de layout para a aplicação.

Você pode ter mais de um layout definido e neste artigo vou mostrar algumas formas de aplicar esses arquivos à sua aplicação ASP .NET MVC.

Vamos supor que você tenha definido um layout específico para a área de administração do seu site usando o arquivo _AdminStart.chstml conforme vemos a seguir:

Veremos como podemos aplicar esse layout à nossa aplicação.

1 - Controlando a renderização do leiaute usando o arquivo _ViewStart.cshtml na raiz da pasta Views

Uma maneira de podermos definir qual layout devemos aplicar e verificar qual o controlador esta chamando a view. Podemos fazer isso incluindo o código abaixo no arquivo _ViewStart.cshtml :

@{
 var controller = HttpContext.Current.Request.RequestContext.RouteData.Values["Controller"].ToString();
  string layout = "";

  if (controller == "Admin")
  {
     layout = "~/Views/Shared/_AdminLayout.cshtml";
  }
  else
  {
    layout = "~/Views/Shared/_Layout.cshtml";
  }
    Layout = layout;
}

Se a chamada estiver sendo feita pelo controller "Admin"  então aplicamos o layout _AdminLayout.cshtml.

Estamos usando a classe RequestContext que encapsula a informação sobre a requisição HTTP que coincide com uma rota definida.

A propriedade RouteData obtém informação sobre a rota solicitada sobre o controlador usado na rota.

2 - Retornando do Layout a partir da ActionResult no Controlador

Podemos sobrescrever o layout padrão retornando o layout desejado a partir de uma ActionResult:

public ActionResult Index()
{

   RegisterModel model = new RegisterModel();

   return View("Index", "_AdminLayout", model);

}

O método View() cria um objeto ViewResult usando os parâmetros recebidos. O método possui várias sobrecargas.

Uma delas usa a sintaxe View(String,String,Object) onde informamos:

  1. O nome da View
  2. O nome da master page ou Layout
  3. O model que renderiza a View

3 - Definindo o Layout em cada View

Outra forma de sobrescrever o layout padrão é definir o layout desejado em cada view:

@{
    ViewBag.Title = "Admin";
}
@{
   Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
.....

Acima temos a definição do leiaute na view Admin.cshtml.

4 - Incluindo o arquivo _ViewStart em cada pasta

Outra forma de definir o leiaute padrão para uma pasta particular é incluindo o arquivo _ViewStart  em cada um dos diretórios com a informação do Layout requerido com o código abaixo:

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

Vimos assim 4 maneiras de implementar um leiaute específico.

Veja os Destaques e novidades do SUPER DVD Visual Basic 2013 (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Rom 8:1 Portanto, agora nenhuma condenação há para os que estão em Cristo Jesus.
Rom 8:2 Porque a lei do Espírito da vida, em Cristo Jesus, te livrou da lei do pecado e da morte.

 Gostou ?   Compartilhe no Facebook     Compartilhe no Twitter

Referências:


José Carlos Macoratti