Mój problem polega na tym, że nie mogę użyć @RenderSection
z szablonu zagnieżdżonego, gdy @RenderSection
jest zdefiniowany w szablonie podstawowym. Obecnie mam zagnieżdżony szablon podstawowy, który jest powiązany z szablonem podrzędnym, który jest następnie używany na stronach widoków. Po zdefiniowaniu @RenderSection
w szablonie podstawowym i renderowaniu go na stronach widoków powoduje błąd.@RenderSection w szablonach zagnieżdżonych
Oto dokładny problem.
Chcę utworzyć RenderSection, aby umożliwić mi wstawianie niestandardowych skryptów. Mój szablon podstawa ....
<!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 wtedy pominąć szablon dziecko jak nie chcesz umieścić dowolny kod niestandardowy głowy tam i zastosować go do samej strony ..
@section HeaderContent {
<script>alert("hi");</script>
}
Moim problemem jest to, że nie mogę dodawać niestandardowego kodu głowy do podstawowego szablonu z moich normalnych stron.
Następujące sekcje zostały zdefiniowane, ale nie zostały wyrenderowane dla strony układu ~/Views/Shared/OneColLayer.cshtml": "HeaderContent
.
Czy muszę wstawić wskaźnik do szablonu bazowego na stronie widoku?
@{
Layout = "~/Views/Shared/BaseTemplate.cshtml";
}
Mój nowy szablon bazowy
<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>
mój nowy szablon dziecko
@{
Layout = "~/Views/Shared/BaseTemplate.cshtml";
}
@RenderSection("HeaderContent", false)
@RenderBody()
mój widok
@{
ViewBag.Title = "Home";
Layout = "~/Views/Shared/OneColLayer.cshtml";
}
@section HeaderContent {
<h1>Left Content</h1>
}
<div>my view content</div>
zawartość zostanie umieszczona w oneCol szablonu teraz szablon bazowy .
wyników ...
<div id="Content">
<h1>Left Content</h1>
</div>
Próbowałem robić tej metody. Ale treść w moim widoku zostanie wyświetlona w szablonie, który nie dziedziczy po szablonie podstawowym. –
@JamesAndrewSmith za twoje zmiany, pojawia się na twoim środkowym szablonie, ponieważ nie umieszczasz '@ RenderSection' w środkowym szablonie wewnątrz renderowanej sekcji. Będę edytować moje, aby pokazać dokładnie, jak twój powinien wyglądać. –
Dobrze mi działało – Jacques