Rasoir: @ Html.Partial () vs @RenderPage ()

Quelle est la manière appropriée de rendre un modèle enfant?

Et quelle est la différence? Les deux semblent fonctionner pour moi.

Et pourquoi @Html.RenderPartial() ne fonctionne plus?

     Html.Partial("MyView") 

    Rend la vue “MyView” à un MvcHtmlSsortingng . Il suit les règles standard pour la consultation des vues (c.-à-d. Vérifier le répertoire actuel, puis vérifier le répertoire Shared ).

     Html.RenderPartial("MyView") 

    Fait la même chose que Html.Partial() , sauf qu’elle écrit directement sa sortie dans le stream de réponses. Ceci est plus efficace, car le contenu de la vue n’est pas mis en mémoire tampon dans la mémoire. Cependant, comme la méthode ne renvoie aucune sortie, @Html.RenderPartial("MyView") ne fonctionnera pas. Vous devez envelopper l’appel dans un bloc de code à la place: @{Html.RenderPartial("MyView");} .

     RenderPage("MyView.cshtml") 

    Rend la vue spécifiée (identifiée par le chemin et le nom du fichier plutôt que par le nom de la vue) directement dans le stream de réponses, comme Html.RenderPartial() . Vous pouvez fournir n’importe quel modèle que vous aimez à la vue en l’incluant comme second paramètre

     RenderPage("MyView.cshtml", MyModel) 

    je préfère

     @RenderPage("_LayoutHeader.cshtml") 

    Plus de

     @{ Html.RenderPartial("_LayoutHeader"); } 

    Seulement parce que la syntaxe est plus facile et plus lisible. En dehors de cela, il ne semble pas y avoir de différence de fonctionnalité.

    EDIT: Un des avantages de RenderPartial est que vous n’avez pas besoin de spécifier l’intégralité du chemin ou de l’extension de fichier qu’il recherche automatiquement dans les espaces communs.

    La méthode RenderPartial ne renvoie pas de balisage HTML comme la plupart des autres méthodes d’assistance. Au lieu de cela, il écrit le contenu directement dans le stream de réponses, c’est pourquoi nous devons l’appeler comme une ligne complète de C #, en utilisant un point-virgule.

    Ceci est légèrement plus efficace que la mise en mémoire tampon du HTML rendu de la vue partielle, car il sera de toute façon écrit dans le stream de réponses. Si vous préférez une syntaxe plus cohérente, vous pouvez utiliser la méthode Html.Partial , qui fait exactement la même chose que la méthode RenderPartial , mais renvoie un fragment HTML et peut être utilisée comme @ Html.Partial (“Product”, p).

    Nous pouvons également passer le modèle en utilisant des vues partielles. @ Html.Partial (“MyView”, “MyModel”);

     @RenderPages() 

    Ce qui précède ne fonctionne pas dans ASP.NET MVC. Cela ne fonctionne que dans les pages Web.

     @Html.Partial("_Footer") 

    Vous devrez utiliser ce qui précède dans ASP.NET MVC.