Mi problema es que parece que no puedo usar @RenderSection
desde una plantilla anidada cuando @RenderSection
está definido en la plantilla base. Actualmente, tengo una plantilla base anidada que está vinculada a una plantilla secundaria que luego se usa en las páginas de vista. Cuando defino el @RenderSection
en la plantilla base y lo renderizo en las páginas de vista arroja un error.@RenderSection en plantillas de maquinilla de afeitar anidadas
Aquí está el problema exacto.
Quiero crear una RenderSection que me permita insertar scripts personalizados. Mi plantilla base ....
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
@RenderSection("HeaderContent", false) // The region of the header scripts (custom css)
</head>
<body>
@RenderBody()
</body>
</html>
I Luego, omita la plantilla hija, ya que no quiero poner ningún código de encargo head allí y aplicarlo a la página en sí ..
@section HeaderContent {
<script>alert("hi");</script>
}
Mi problema es que parece que no puedo agregar un código de cabeza personalizado en la plantilla base de mis páginas normales.
Las siguientes secciones se han definido pero no se han procesado para la página de diseño ~/Views/Shared/OneColLayer.cshtml": "HeaderContent
.
¿Debo incluir un puntero a la plantilla base en la página de visualización?
@{
Layout = "~/Views/Shared/BaseTemplate.cshtml";
}
Mi nueva plantilla base
<head>
<link rel="stylesheet" type="text/css" href="@Url.Content("~/content/layout.css")" />
<link rel="stylesheet" type="text/css" href="@Url.Content("~/content/global.css")" />
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/js/fadeInFadeOut.js")"></script>
<title>@ViewBag.Title</title>
@RenderSection("HeaderContent", false)
</head>
<body>
@RenderBody()
</body>
mi nueva plantilla hija
@{
Layout = "~/Views/Shared/BaseTemplate.cshtml";
}
@RenderSection("HeaderContent", false)
@RenderBody()
mi punto de vista
@{
ViewBag.Title = "Home";
Layout = "~/Views/Shared/OneColLayer.cshtml";
}
@section HeaderContent {
<h1>Left Content</h1>
}
<div>my view content</div>
el contenido se coloca en la plantilla oneCol ahora la plantilla base .
resultados ...
<div id="Content">
<h1>Left Content</h1>
</div>
He intentado hacer este método. Pero el contenido en mi vista se muestra en la plantilla que hereda, no en la plantilla base. –
@JamesAndrewSmith por sus ediciones, aparece en su plantilla del medio porque no está poniendo '@ RenderSection' en la plantilla del medio dentro de su sección procesada. Editaré el mío para mostrarte exactamente cómo debería ser el tuyo. –
Funcionó bien para mí – Jacques