Dazu erstellt man in den Ordner Views eine neue cshtml Datei, welche als Template dienen soll. Um diese vor anderen Views zu trennen empfiehlt es sich diese Template cshtml Seiten im shared Verzeichnis zu sichern.
Dieses Template kann z.B. ein Logo und den Footer beinhalten, die jede oder nur einige der Html Seiten beinhalten soll.
1 2 3 4 5 6 7 8 9 |
<!DOCTYPE html> <html> <head> <title>@ViewBag.Title</title> </head> <body> @RenderBody() </body> </html> |
Die Razor Anweisung @ViewBag.Title erlaubt es dann später jeder View einen anderen Titel vergeben zu können.
Die Anweisung @RenderBody() sagt aus, das hier der Inhalt der anderen Views stehen wird.
Im Controller kann man, wenn man nun eine neue View erstellt diese Template View auswählen:
Anschließend lässt sich im ViewBag.Title der Titel Der Seite anpassen und im Layout sehen wir wohin der Verweis führt.
Im unteren Block lässt sich nun einfach nur der gewünschte Inhalt anpassen
1 2 3 4 5 6 |
@{ ViewBag.Title = "Template"; Layout = "~/Views/_ViewStart.cshtml"; } <h2>Template</h2> |
Sections
Mann kann aber auch Innerhalb von Template Seiten an bestimmten Stellen Sektionen anfügen, die die Views mit eigenem Inhalt füllen soll.
1 2 3 4 5 6 |
if @IsSectionDefined("mySection")) { @RenderSection("mySection") } else{ <p>Hier steht eine Alternative</p> } |
und in der View:
1 2 3 |
@section mySection{ @Html.ActionLink("meinLink", "meinLink") } |
Login