SlideShare una empresa de Scribd logo
4
Lo más leído
5
Lo más leído
10
Lo más leído
Layouts y vistas parciales
Danae Aguilar Guzmán
MCT, MS, MCTS, MCP
danaeaguilar@gmail.com
Layout
 Las vistas de layout nos permiten reusar la
estructura principal de nuestras páginas
 Mantienen consistente la estructura de las
páginas
 Definen un template común para el sitio o
una parte de el.
 El template define donde las páginas hijas
insertarán su contenido. @RenderBody()
Layout
1. Definiendo un layout:
 @RenderBody indica donde se agregará el contenido de
las páginas hijas
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport"
content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
@RenderBody()
Layout
2. Usando el layout:
 En las páginas hijas especificamos cual es el
template padre. Layout
 Si no especificamos se tomará el que esté en
_ViewStart.cshtml.
 Para quitar un template ponemos el valor de
Layout en null.
@{
Layout = "~/Views/Shared/SiteLayout.cshtml";
ViewBag.Title = "Ejemplo layout";
}
<p>Este es un ejemplo</p>
Layout
Se puede especificar mas de un placeholder en
el template:
En las páginas hijas, ponemos el contenido:
<body>
<h1>@ViewBag.Title</h1>
<div id="main-content">@RenderBody()</div>
<footer>@RenderSection("Footer")</footer>
</body>
@section Footer {
Este es el <strong>pie</strong> de página.
}
Layout
Se puede definir los placeholders como
opcionales:
Y poner algo si es que los hijos no lo hacen:
@RenderSection("Footer", required: false)
<footer>
@if (IsSectionDefined("Footer"))
{
RenderSection("Footer");
}
else
{
<span>Este es el pie por defecto.</span>
}
</footer>
Layout
ViewStart
Se asigna el layout por defecto en
_ViewStart.cshtml:
 Puede aplicarse por folder o por página,
creando este archivo en un folder específico o
en el folder shared.
 Asignar null para limpiar el layout
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Layout
Vistas Parciales
 Permiten reutilizar contenido.
1. Retornar una vista parcial PartialView
2. Crear la vista como partial view:
public ActionResult Mensaje()
{
ViewBag.Message = "Una vista parcial.";
return PartialView();
}
Layout
Vistas Parciales
3. Definir el contenido de la vista parcial:
Considerar que:
 La vista parcial no usa un layout
 La vista principal deberá especificar cual es el
layout.
<h2>@ViewBag.Mensaje</h2>
Layout
Vistas Parciales
4.1. Podemos cargar la vista parcial con AJAX,
usando el método load de JQuery:
<div id="resultado"></div>
@section scripts {
<script type="text/javascript">
$(function () {
$('#resultado').load('/home/mensaje');
});
</script>
}
 Lo invocamos para el elemento
donde se pondrá el contenido
(por ejemplo un div)
 Le pasamos el URI de el
controller y acción que
retorna la vista parcial
Layout
Vistas Parciales
4.2. Podemos pasarle datos:
 Una vista parcial puede ser también
fuertemente tipada
 También podríamos pasarle datos en el
query string
$(function () {
$('#resultado').load('/home/mensaje',
{ nombre: "Juanito2" });
});
Layout
Vistas Parciales
5.1. Podemos agregarla usando @Html.Partial
o Html.RenderPartial:
@if (true)
{
Html.RenderPartial("~/Views/Home/Producto.cshtml");
}
@Html.Partial("~/Views/Home/_Producto.cshtml", producto);
Layout
Vistas Parciales
6.1. Podemos agregarla usando
Ajax.ActionLink:
 Debemos usar jQuery y
jquery.unobtrusive-ajax
<div id="divMessage">aqui se cargará</div>
@Ajax.ActionLink("Refresh new", "MiAccion", new AjaxOptions
{
HttpMethod = "POST",
UpdateTargetId = "divMessage",
InsertionMode = InsertionMode.Replace
})
Layout
Vistas Parciales
6.2. Podemos pasarle datos usando
Ajax.ActionLink:
@Ajax.ActionLink("Click aqui",
"ObtenerProducto", /* accion */
"Producto", /* controller */
new { codigoProducto = Model.codigo }, /* datos */
new AjaxOptions() {
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divProducto" })

Más contenido relacionado

PPT
Pbo inheritance, polymorphism, dan inte
PDF
Tutorial Packet Tracer NAT DHCP DNS Web Server FTP Email NTP SSH TELNET
DOCX
Laporan PBO Modul 4
PDF
BEM - CSS, Seriously
DOCX
Laporan Praktek Jaringan Komputer "Subnetting"
PDF
CSS Dasar #6 : Background
PPTX
php basics
PDF
ASP.NET MVC - validacion de datos
Pbo inheritance, polymorphism, dan inte
Tutorial Packet Tracer NAT DHCP DNS Web Server FTP Email NTP SSH TELNET
Laporan PBO Modul 4
BEM - CSS, Seriously
Laporan Praktek Jaringan Komputer "Subnetting"
CSS Dasar #6 : Background
php basics
ASP.NET MVC - validacion de datos

La actualidad más candente (11)

PPT
Materi tik-kelas-9-bab-2-jaringan-komputer
PDF
CSS Layouting #5 : Position
PDF
CSS Layouting #3 : Box Model
PDF
OOP - Kelas abstrak dan Komposisi
PDF
Tipe Data pada MySQL
PDF
CSS Dasar #4 : Font Styling
PPTX
2. Classes | Object Oriented Programming in JavaScript | ES6 | JavaScript
PPTX
ppt Tipe data,variabel, operator
PPTX
Formatting tags
PDF
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
PDF
CSS Best practice
Materi tik-kelas-9-bab-2-jaringan-komputer
CSS Layouting #5 : Position
CSS Layouting #3 : Box Model
OOP - Kelas abstrak dan Komposisi
Tipe Data pada MySQL
CSS Dasar #4 : Font Styling
2. Classes | Object Oriented Programming in JavaScript | ES6 | JavaScript
ppt Tipe data,variabel, operator
Formatting tags
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
CSS Best practice
Publicidad

Más de Danae Aguilar Guzmán (20)

PDF
Microsoft HoloLens
PDF
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
PDF
WPF 09. procesos asíncronos y programación paralela
PDF
WPF 08 - manejo y vinculación de datos
PDF
WPF 07 - gráficos, animación y multimedia
PDF
WPF 06 - personalizando los controles de interfaz de usuario
PDF
WPF 05 - triggers y eventos
PDF
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
PDF
WPF 03 - controles WPF
PDF
WPF 02 - construyendo una interfaz de usuario
PDF
WPF 01 - introducción
PDF
ASP.NET MVC - introduccion al web api
PDF
ASP.NET MVC - bundling y minification
PDF
ASP.NET MVC - AJAX
PDF
ASP.NET MVC - implementando globalizacion and localizacion
PDF
ASP.NET MVC - areas, manejo de estado
PDF
ASP.NET MVC - Introducción a ASP.NET MVC
PDF
Crecimiento profesional como desarrollador de software
PDF
10. consumiendo datos
PDF
09. Creando interfaces de usuario animadas y adaptables
Microsoft HoloLens
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
WPF 09. procesos asíncronos y programación paralela
WPF 08 - manejo y vinculación de datos
WPF 07 - gráficos, animación y multimedia
WPF 06 - personalizando los controles de interfaz de usuario
WPF 05 - triggers y eventos
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
WPF 03 - controles WPF
WPF 02 - construyendo una interfaz de usuario
WPF 01 - introducción
ASP.NET MVC - introduccion al web api
ASP.NET MVC - bundling y minification
ASP.NET MVC - AJAX
ASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - areas, manejo de estado
ASP.NET MVC - Introducción a ASP.NET MVC
Crecimiento profesional como desarrollador de software
10. consumiendo datos
09. Creando interfaces de usuario animadas y adaptables
Publicidad

Último (11)

PPTX
Fundamentos de Python - Curso de Python dia 1
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
Implementación equipo monitor12.08.25.pptx
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PPTX
sistemas de informacion.................
PPTX
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PPTX
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
PDF
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
Fundamentos de Python - Curso de Python dia 1
AutoCAD Herramientas para el futuro, Juan Fandiño
Implementación equipo monitor12.08.25.pptx
Conceptos basicos de Base de Datos y sus propiedades
Derechos_de_Autor_y_Creative_Commons.pptx
sistemas de informacion.................
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
Su punto de partida en la IA: Microsoft 365 Copilot Chat

ASP.NET MVC - layouts y vistas parciales

  • 1. Layouts y vistas parciales Danae Aguilar Guzmán MCT, MS, MCTS, MCP danaeaguilar@gmail.com
  • 2. Layout  Las vistas de layout nos permiten reusar la estructura principal de nuestras páginas  Mantienen consistente la estructura de las páginas  Definen un template común para el sitio o una parte de el.  El template define donde las páginas hijas insertarán su contenido. @RenderBody()
  • 3. Layout 1. Definiendo un layout:  @RenderBody indica donde se agregará el contenido de las páginas hijas <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title>@ViewBag.Title</title> @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") </head> <body> @RenderBody()
  • 4. Layout 2. Usando el layout:  En las páginas hijas especificamos cual es el template padre. Layout  Si no especificamos se tomará el que esté en _ViewStart.cshtml.  Para quitar un template ponemos el valor de Layout en null. @{ Layout = "~/Views/Shared/SiteLayout.cshtml"; ViewBag.Title = "Ejemplo layout"; } <p>Este es un ejemplo</p>
  • 5. Layout Se puede especificar mas de un placeholder en el template: En las páginas hijas, ponemos el contenido: <body> <h1>@ViewBag.Title</h1> <div id="main-content">@RenderBody()</div> <footer>@RenderSection("Footer")</footer> </body> @section Footer { Este es el <strong>pie</strong> de página. }
  • 6. Layout Se puede definir los placeholders como opcionales: Y poner algo si es que los hijos no lo hacen: @RenderSection("Footer", required: false) <footer> @if (IsSectionDefined("Footer")) { RenderSection("Footer"); } else { <span>Este es el pie por defecto.</span> } </footer>
  • 7. Layout ViewStart Se asigna el layout por defecto en _ViewStart.cshtml:  Puede aplicarse por folder o por página, creando este archivo en un folder específico o en el folder shared.  Asignar null para limpiar el layout @{ Layout = "~/Views/Shared/_Layout.cshtml"; }
  • 8. Layout Vistas Parciales  Permiten reutilizar contenido. 1. Retornar una vista parcial PartialView 2. Crear la vista como partial view: public ActionResult Mensaje() { ViewBag.Message = "Una vista parcial."; return PartialView(); }
  • 9. Layout Vistas Parciales 3. Definir el contenido de la vista parcial: Considerar que:  La vista parcial no usa un layout  La vista principal deberá especificar cual es el layout. <h2>@ViewBag.Mensaje</h2>
  • 10. Layout Vistas Parciales 4.1. Podemos cargar la vista parcial con AJAX, usando el método load de JQuery: <div id="resultado"></div> @section scripts { <script type="text/javascript"> $(function () { $('#resultado').load('/home/mensaje'); }); </script> }  Lo invocamos para el elemento donde se pondrá el contenido (por ejemplo un div)  Le pasamos el URI de el controller y acción que retorna la vista parcial
  • 11. Layout Vistas Parciales 4.2. Podemos pasarle datos:  Una vista parcial puede ser también fuertemente tipada  También podríamos pasarle datos en el query string $(function () { $('#resultado').load('/home/mensaje', { nombre: "Juanito2" }); });
  • 12. Layout Vistas Parciales 5.1. Podemos agregarla usando @Html.Partial o Html.RenderPartial: @if (true) { Html.RenderPartial("~/Views/Home/Producto.cshtml"); } @Html.Partial("~/Views/Home/_Producto.cshtml", producto);
  • 13. Layout Vistas Parciales 6.1. Podemos agregarla usando Ajax.ActionLink:  Debemos usar jQuery y jquery.unobtrusive-ajax <div id="divMessage">aqui se cargará</div> @Ajax.ActionLink("Refresh new", "MiAccion", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divMessage", InsertionMode = InsertionMode.Replace })
  • 14. Layout Vistas Parciales 6.2. Podemos pasarle datos usando Ajax.ActionLink: @Ajax.ActionLink("Click aqui", "ObtenerProducto", /* accion */ "Producto", /* controller */ new { codigoProducto = Model.codigo }, /* datos */ new AjaxOptions() { InsertionMode = InsertionMode.Replace, UpdateTargetId = "divProducto" })