06_ASP.NET Passagem Dados, ViewsRazorLayouts

A passagem de dados:
A passagem de dados do Controlador à Vista, e ao próximo request, pode ser efetuada de outras formas para além da passagem de dados através de um argumento da View

Pode ser usado nas passagem de dados:
ViewData emque o Objeto é do tipo dicionário, acessível usando strings como chaves e necessita do type casting para tipos complexos
ou o ViewBag, objecto do tipo dinâmico, não necessita de type casting nem verificações de null e as propriedades são adicionadas em tempo de execução

//exemplo: ViewData
//no controlador
public ActionResult Vencedor()
{
var pescador = new Pescador() { Nome = "Pedro" };
ViewData["PescadorData"] = pescador;
return View();
}
//na View
@using MVC1.Models
@model MVC1.Models.Pescador
@{
ViewBag.Title = "Vencedor";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>@(((Pescador)ViewData["PescadorData"]).Nome)</h2>

ou

//exemplo: ViewBag
//no controlador
public ActionResult Vencedor()
{
var pescador = new Pescador() { Nome = "Pedro" };
ViewBag.PescadorProp = pescador;
return View();
}
//na View
@using MVC1.Models
@model MVC1.Models.Pescador
@{
ViewBag.Title = "Vencedor";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>@ViewBag.PescadorProp.Nome</h2>

As viewes:
A view não deve executar qualquer lógica de negócio, ou interagir com a base de dados directamente.
Deve trabalhar somente com os dados que lhe são fornecidos pelo controlador.

//exemplo para obter /pescadores/Index
public ActionResult Index()
{
return View();
}
//exemplo para obter /pescadores/OutraView
public ActionResult Index()
{
return View("OutraView");
}

A Sintaxe Razor:
Minimiza a quantidade de sintaxe e caracteres extra
Codifica automaticamente qualquer output enviado através do @ de forma a prevenir ataques cross site scripting
Blocos de código estão delimitados com @{ … }
Ficheiros C# tem extensão .cshtml

//exemplo razor view
@{ var mensagem = "Programação"; }
<p>O valor da Mensagem é: @mensagem</p>
@{
var boasVindas= "Bem vindo ao Razor!";
var diaSemana= DateTime.Now.DayOfWeek;
var mensagem = boasVindas + " Hoje é " + diaSemana;
}

Os Layouts:
_Layout.cshtml, Define o que se quer apresentar em todas as páginas da aplicação
A view _Layout deve ser especificada na pasta Shared existente na secção Views
E o RenderBody permite especificar onde será apresentado o conteúdo individual das views

Tags : , , ,