gerarchia vista Data: Index.cshtml -> _Layout.cshtml -> _MasterLayout.cshtml:MVC: Come utilizzare le sezioni (rendering) dalla vista principale (principale) (Vista layout)?
_MasterLayout.cshtml - l'insieme di sezioni, che voglio usare nel layout principale (sotto)
@section javascriptLinks {
<script src="~/client/vendor/require-jquery.js" data-main="~/client/main.js" type="text/javascript"></script>
}
@RenderBody()
_Layout.cshtml - sito attuale struttura master
@{
Layout = "~/Views/Shared/_MasterLayout.cshtml";
}
<!doctype html>
<html>
<!-- actual site layout here -->
<body>
@RenderBody()
@RenderSection("javascriptLinks")
</body>
</html>
Index.cshtml - qualche markup specifico per pagina concreto
L'idea di suddividere _Layout.cshtml e _MasterLayout.cshtml è la condivisione del codice. Ho una specie di libreria/framework e _MasterLayout appartiene a questa libreria. E _Layout.cshtml è un layout principale del sito dell'applicazione in cemento.
Sfortunatamente, questo schema non funziona. Durante il rendering _Layout.cshtml non vedrà le sezioni da _MasterLayout.cshtml.
Esiste un modo per utilizzare le sezioni in questo caso (prelevandole da una vista padre non da una vista figlio)?
Una possibile soluzione che posso vedere è la creazione di pagine separate per ogni sezione nel mio _MasterLayout.cshtml e chiamata @RenderPage in _Layout. Ma mi piacerebbe avere un singolo asset di condivisione (_MasterLayout.cshtml).
Questo ha senso in effetti, ma _Layout.cshtml diventa innaturale (invece di markup html deve contenere il set di dichiarazioni @ section). Mi piacerebbe _Layout.cshtml per contenere l'intero layout di pagina e importare solo parti "standard" (cioè sezioni) da una sorgente (facilmente condivisa). – Shrike