asp.net-mvc
Vues partielles
Recherche…
Introduction
Une vue partielle est une vue rendue dans une autre vue. Les vues partielles peuvent être réutilisées et empêcher ainsi la duplication du code. Ils peuvent être rendus par Html.Partial ou Html.RenderPartial
Syntaxe
@ Html.Partial ("ViewName")
@ Html.Partial ("ViewName", ViewModel)
@ {Html.RenderPartial ("ViewName");}
Si votre vue partielle se trouve dans un autre dossier que le dossier partagé, vous devrez mentionner le chemin complet de la vue comme ci-dessous:
[email protected] ("~ / Areas / Admin / Views / Shared / partial / _subcat.cshtml")
Vue partielle avec modèle
Un modèle peut également être ajouté à la vue partielle:
@model Solution.Project.Namespace.MyModelClass
<p>@Model.Property</p>
Dans la vue, vous pouvez maintenant utiliser:
<div>
@Html.Partial("PartialViewExample", new MyModelClass(){Property="my property value"})
</div>
<div>
@{ Html.RenderPartial("PartialViewExample", new MyModelClass(){Property="my property value"}); }
</div>
Vue partielle sur une chaîne - pour le contenu du courrier électronique, etc.
Appeler la fonction
string InvoiceHtml = myFunction.RenderPartialViewToString("PartialInvoiceCustomer", ToInvoice); // ToInvoice is a model, you can pass parameters if needed
Fonction pour générer du HTML
public static string RenderPartialViewToString(string viewName, object model)
{
using (var sw = new StringWriter())
{
BuyOnlineController controller = new BuyOnlineController(); // instance of the required controller (you can pass this as a argument if needed)
// Create an MVC Controller Context
var wrapper = new HttpContextWrapper(System.Web.HttpContext.Current);
RouteData routeData = new RouteData();
routeData.Values.Add("controller", controller.GetType().Name.ToLower().Replace("controller", ""));
controller.ControllerContext = new ControllerContext(wrapper, routeData, controller);
controller.ViewData.Model = model;
var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.ToString();
}
}
Vue partielle - PartialInvoiceCustomer
@model eDurar.Models.BuyOnlineCartMaster
<h2>hello customer - @Model.CartID </h2>
Html.Partial Vs Html.RenderPartial
Html.Partial retourne une chaîne par contre Html.RenderPartial renvoie un void.
Html.RenderPartial
Cette méthode renvoie void et le résultat est directement écrit dans le flux de réponse HTTP. Cela signifie qu'il utilise le même objet TextWriter que celui utilisé dans la page Web / le modèle en cours. Pour cette raison, cette méthode est plus rapide que la méthode partielle. Cette méthode est utile lorsque l'affichage des données dans la vue partielle se trouve déjà dans le modèle de vue correspondant.
Exemple: Dans un blog pour afficher les commentaires d'un article, nous aimerions utiliser la méthode RenderPartial car une information d'article avec des commentaires est déjà remplie dans le modèle de vue.
@{Html.RenderPartial("_Comments");}
Html.Partial
Cette méthode retourne une chaîne codée en HTML. Cela peut être stocké dans une variable. Comme la méthode RenderPartial, la méthode partielle est également utile lorsque les données affichées dans la vue partielle sont déjà dans le modèle de vue correspondant.
Exemple: Dans un blog pour afficher les commentaires d'un article, vous pouvez utiliser la méthode Partial car une information d'article avec des commentaires est déjà remplie dans le modèle de vue.
@Html.Partial("_Comments")