Suche…


Einführung

Eine Teilansicht ist eine Ansicht, die in einer anderen Ansicht gerendert wird. Teilansichten können wiederverwendet werden und verhindern so die Duplizierung von Code. Sie können von Html.Partial oder Html.RenderPartial gerendert werden

Syntax

  • @ Html.Partial ("ViewName")

    @ Html.Partial ("ViewName", ViewModel)

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

    Wenn sich Ihre Teilansicht in einem anderen Ordner als dem freigegebenen Ordner befindet, müssen Sie den vollständigen Pfad der Ansicht wie folgt angeben:

    [email protected] ("~ / Areas / Admin / Views / Shared / partial / _subcat.cshtml")

Teilansicht mit Modell

Ein Modell kann auch zur Teilansicht hinzugefügt werden:

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

In der Ansicht können Sie jetzt einfach Folgendes verwenden:

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

Teilansicht auf einen String - für E-Mail-Inhalte

Funktion aufrufen

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

Funktion zum Generieren von 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();
    }
}

Teilansicht - PartialInvoiceCustomer

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

Html.Partial Vs Html.RenderPartial

Html.Partial gibt dagegen eine Zeichenfolge zurück, Html.RenderPartial gibt void zurück.

Html.RenderPartial

Diese Methode gibt void zurück und das Ergebnis wird direkt in den HTTP-Antwortstream geschrieben. Das bedeutet, dass das gleiche TextWriter-Objekt verwendet wird, das in der aktuellen Webseite / Vorlage verwendet wird. Aus diesem Grund ist diese Methode schneller als die Teilmethode. Diese Methode ist hilfreich, wenn die Anzeige der Daten in der Teilansicht bereits im entsprechenden Ansichtsmodell erfolgt.

Beispiel: In einem Blog zum Anzeigen von Kommentaren eines Artikels möchten wir die RenderPartial-Methode verwenden, da Artikelinformationen mit Kommentaren bereits im Ansichtsmodell enthalten sind.

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

Html.Partial

Diese Methode gibt eine HTML-codierte Zeichenfolge zurück. Dies kann in einer Variablen gespeichert werden. Wie die RenderPartial-Methode ist die Partial-Methode auch nützlich, wenn die Anzeige der Daten in der Teilansicht bereits im entsprechenden Ansichtsmodell erfolgt.

Beispiel: In einem Blog zum Anzeigen von Kommentaren eines Artikels können Sie die partielle Methode verwenden, da Artikelinformationen mit Kommentaren bereits im Ansichtsmodell enthalten sind.

@Html.Partial("_Comments")


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow