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")


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow