Quelle est la différence entre «retourner View ()» et «retourner PartialView ()»

Je comprends que des vues partielles sont utilisées pour rendre des parties d’une vue. Mais je ne peux pas comprendre quelle est la différence entre return View() et return PartialView() et quand utilisez-vous chacun d’eux.

Return View() – Rend une page .aspx | .cshtml

  • Affiche une page .aspx normale pouvant également contenir des vues partielles.

Return PartialView() – Renders .ascx | .cshtml Contrôle

  • Rend un segment de HTML au navigateur qui peut être demandé via des requêtes AJAX ou Non-AJAX.

View () renvoie ViewResult PartialView () renvoie PartialViewResult tous deux ViewResultBase de ViewResultBase

La différence est décrite par Reflector ci-dessous …

 public class PartialViewResult : ViewResultBase { // Methods protected override ViewEngineResult FindView(ControllerContext context) { ViewEngineResult result = base.ViewEngineCollection.FindPartialView(context, base.ViewName); if (result.View != null) { return result; } SsortingngBuilder builder = new SsortingngBuilder(); foreach (ssortingng str in result.SearchedLocations) { builder.AppendLine(); builder.Append(str); } throw new InvalidOperationException(ssortingng.Format(CultureInfo.CurrentUICulture, MvcResources.Common_PartialViewNotFound, new object[] { base.ViewName, builder })); } } public class ViewResult : ViewResultBase { // Fields private ssortingng _masterName; // Methods protected override ViewEngineResult FindView(ControllerContext context) { ViewEngineResult result = base.ViewEngineCollection.FindView(context, base.ViewName, this.MasterName); if (result.View != null) { return result; } SsortingngBuilder builder = new SsortingngBuilder(); foreach (ssortingng str in result.SearchedLocations) { builder.AppendLine(); builder.Append(str); } throw new InvalidOperationException(ssortingng.Format(CultureInfo.CurrentUICulture, MvcResources.Common_ViewNotFound, new object[] { base.ViewName, builder })); } // Properties public ssortingng MasterName { get { return (this._masterName ?? ssortingng.Empty); } set { this._masterName = value; } } } 

return PartialView () renvoie un fragment de code HTML et est utilisé avec les fichiers ViewUserControls – ASCX. Le principal avantage de l’utilisation de “return PartialView ()” est que vous ne souhaitez pas rendre toutes les autres pages HTML, telles que les balises HTML, BODY, HEAD.

L’une des utilisations les plus courantes est le moment où je veux rendre uniquement le contrôle utilisateur, selon que la requête à une action est un appel AJAX.

J’ai donc une vue appelée MyControl.aspx où j’utilise l’assistant HTML RenderPartial et j’ai une vue partielle nommée MyControl.ascx où je fais le rendu réel.

Je peux basculer entre ces deux actions dans mon contrôleur comme ceci:

 if (Request.IsAjaxRequest()) return PartialView("MyControl"); // this renders MyControl.ascx return View(); // this render MyControl.aspx 

Une action de contrôleur retourne généralement une vue partielle lorsque AJAX est utilisé, et une mise à jour de la région de la page représentée par la vue partielle est effectuée. La manière normale d’utiliser des vues partielles consiste simplement à appeler Html.RenderPartial dans votre vue principale.