asp.net-mvc
Teilansichten
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")