Je comprends que les vues partielles sont utilisées pour rendre certaines parties d’une vue. Mais je ne comprends pas quelle est la différence entre return View()
et return PartialView()
et quand utilisez-vous chacun d'entre eux.
Réponses
Trop de publicités?De retour View()
- Rend une .aspx|.cshtml page
- Le rend normal .page aspx qui peuvent aussi contenir des Vues Partielles
De Retour PartialView()
- Rend .ascx|.cshtml de Contrôle
- Rend un segment de code HTML au navigateur qui peut être demandée via AJAX ou Non des requêtes AJAX semblables.
Afficher() renvoie ViewResult
PartialView() renvoie PartialViewResult
les deux hériter d' ViewResultBase
La différence est décrite par un Réflecteur 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;
}
StringBuilder builder = new StringBuilder();
foreach (string str in result.SearchedLocations)
{
builder.AppendLine();
builder.Append(str);
}
throw new InvalidOperationException(string.Format(CultureInfo.CurrentUICulture, MvcResources.Common_PartialViewNotFound, new object[] { base.ViewName, builder }));
}
}
public class ViewResult : ViewResultBase
{
// Fields
private string _masterName;
// Methods
protected override ViewEngineResult FindView(ControllerContext context)
{
ViewEngineResult result = base.ViewEngineCollection.FindView(context, base.ViewName, this.MasterName);
if (result.View != null)
{
return result;
}
StringBuilder builder = new StringBuilder();
foreach (string str in result.SearchedLocations)
{
builder.AppendLine();
builder.Append(str);
}
throw new InvalidOperationException(string.Format(CultureInfo.CurrentUICulture, MvcResources.Common_ViewNotFound, new object[] { base.ViewName, builder }));
}
// Properties
public string MasterName
{
get
{
return (this._masterName ?? string.Empty);
}
set
{
this._masterName = value;
}
}
}
retour PartialView() renvoie fragment de code HTML et elle est utilisée avec ViewUserControls - ASCX fichiers. Le principal avantage de l'utilisation de "retour PartialView ()", c'est quand vous ne voulez pas de rendre toutes les autres page HTML choses, comme le HTML, le CORPS, les balises d'en-TÊTE.
L'une des utilisations les plus courantes par moi, c'est quand je veux le rendre juste l'utilisateur le contrôle sur la base de savoir si la demande d'une action est appel AJAX.
J'ai donc une Vue appelée MyControl.aspx où j'utilise RenderPartial helper HTML et j'ai une Vue partielle nommé MyControl.ascx où je fais le rendu réel.
Je peux passer entre ces deux-là en mon contrôleur de l'action comme ceci:
if (Request.IsAjaxRequest())
return PartialView("MyControl"); // this renders MyControl.ascx
return View(); // this render MyControl.aspx
Une action du contrôleur renvoie généralement un PartialView lorsque AJAX est utilisé et une mise à jour de la région de page représentée par la vue partielle est effectuée. La manière habituelle d'utiliser des vues partielles consiste simplement à appeler Html.RenderPartial
dans votre vue principale.