Tag: Layouts
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