Zoeken…


Invoering

Een gedeeltelijke weergave is een weergave die wordt weergegeven in een andere weergave. Gedeeltelijke weergaven kunnen opnieuw worden gebruikt en voorkomen zo dubbele code. Ze kunnen worden weergegeven door Html.Partial of Html.RenderPartial

Syntaxis

  • @ Html.Partial ( "ViewName")

    @ Html.Partial ( "ViewName", ViewModel)

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

    Als uw gedeeltelijke weergave zich in een andere map dan de gedeelde map bevindt, moet u het volledige pad van de weergave vermelden zoals hieronder:

    [email protected] ( "~ / gebieden / Admin / Bekeken / Shared / gedeeltelijke / _subcat.cshtml")

Gedeeltelijke weergave met model

Een model kan ook worden toegevoegd aan de gedeeltelijke weergave:

@model Solution.Project.Namespace.MyModelClass
<p>@Model.Property</p>

In de weergave kunt u nu gewoon gebruiken:

<div>
    @Html.Partial("PartialViewExample", new MyModelClass(){Property="my property value"})  
</div>
<div>
    @{ Html.RenderPartial("PartialViewExample", new MyModelClass(){Property="my property value"}); }  
</div>

Gedeeltelijke weergave van een string - voor e-mailinhoud enz

Functie oproepen

string InvoiceHtml = myFunction.RenderPartialViewToString("PartialInvoiceCustomer", ToInvoice); // ToInvoice is a model, you can pass parameters if needed

Functie om HTML te genereren

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();
    }
}

Gedeeltelijke weergave - PartialInvoiceCustomer

@model eDurar.Models.BuyOnlineCartMaster
 <h2>hello customer - @Model.CartID </h2>

Html.Partial Vs Html.RenderPartial

Html.Partial retourneert een tekenreeks daarentegen. Html.RenderPartial retourneert void.

Html.RenderPartial

Deze methode retourneert ongeldig en het resultaat wordt rechtstreeks naar de HTTP-reactiestroom geschreven. Dat betekent dat het hetzelfde TextWriter-object gebruikt als in de huidige webpagina / sjabloon. Om deze reden is deze methode sneller dan de gedeeltelijke methode. Deze methode is handig als de gegevens in de gedeeltelijke weergave al in het overeenkomstige weergavemodel staan.

Voorbeeld: in een blog om opmerkingen van een artikel te tonen, willen we de RenderPartial-methode gebruiken, omdat er al artikelinformatie met opmerkingen in het viewmodel is ingevuld.

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

Html.Partial

Deze methode retourneert een HTML-gecodeerde string. Dit kan worden opgeslagen in een variabele. Net als de RenderPartial-methode, is de Partial-methode ook nuttig wanneer de gegevens in de gedeeltelijke weergave al in het overeenkomstige weergavemodel staan.

Voorbeeld: in een blog om opmerkingen van een artikel te tonen, kunt u de methode Gedeeltelijk gebruiken, omdat er al artikelinformatie met opmerkingen in het viewmodel is ingevuld.

@Html.Partial("_Comments")


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow