Dans ASP.net MVC 5, nous pouvons passer la section à la mise en page en utilisant
@RenderSection("AnySection", required: false)
et la restituer en mise en page par
@section AnySection{ //section code here }
Mais comment pouvons-nous passer à nouveau cette section à une partie à l'intérieur de cette mise en page? Voir l'image ci-dessous pour référence
subheader-v1
est une vue partielle dans ma mise en page J'ai fait ma mise en page avec de nombreuses vues partielles.
Lorsque j'essaye ceci comme mentionné dans l'image ci-dessus, cela me donne cette erreur
Le fichier "~ / Views / Shared / partials / _subheader / subheader-v1.cshtml" ne peut pas être demandé directement car il appelle la méthode "RenderSection". '
3 Réponses :
Vous ne transmettez pas une section à la mise en page. C'est la mise en page qui détermine quelles sections doivent (ou pourraient) être rendues dans la vue ... elle détermine également où dans la vue la section doit être rendue.
Depuis Documentation MS a>:
Une mise en page peut éventuellement référencer une ou plusieurs sections, en appelant RenderSection. Les sections fournissent un moyen d'organiser où certaines pages les éléments doivent être placés.
Les sections ne fonctionnent pas dans les vues partielles et c'est par conception. Vous devrez déplacer RenderSection
vers votre mise en page et le corps de la section vers votre vue. Voir cette question < / a> pour plus d'informations.
À l'intérieur du sous-en-tête-v1.cshtml (puisque l'objectif est d'amener le partiel "CoordinatesSelection" dans le sous-en-tête-v1.cshtml), remplacez
@Html.Partial("CoordinatesSelection", Model)
POUR
@RenderSection("Coordinates", required: false)
Le code @RenderSection ("Coordinates", obligatoire: false) a été conçu pour être écrit directement dans le layout pour éviter les doublons !!
p>
Deux façons:
1.
Vous pouvez migrer de subheader-v1
vers layout
layout:
@section Coordinates{ //your partial code }
Et vous pouvez utilisez RenderSection dans la mise en page
2.
Vous pouvez passer un modèle à Partial subheader-v1
*layout:
@model object . . . <div class="kt-subheader__wrapper"> @Html.Raw(Model)
* subheader-v1: p >
@Html.Partial("partials/_subheader/subheader-v1",RenderSection("Coordinates",false)) @RenderBody()
* SelectClosetStore
// your subheader-v1 code @RenderBody()
Je pense que la première méthode est meilleure que la seconde.
s'il vous plaît, quel est le sous-titre-v1
C'est une vue partielle à l'intérieur de ma mise en page J'ai fait ma mise en page avec de nombreuses vues partielles.
Dans le sous-titre-v1.cshtml, remplacez @RenderSection ("Coordinates", obligatoire: false) TO ==> @ Html.Partial ("CoordinatesSelection", Model) ... le code @RenderSection ("Coordinates", obligatoire: false) a été conçu pour être écrit directement dans la mise en page !!