Ricerca…


introduzione

Una vista parziale è una vista resa in un'altra vista. Le viste parziali possono essere riutilizzate e quindi prevenire la duplicazione del codice. Possono essere renderizzati da Html.Partial o Html.RenderPartial

Sintassi

  • @ Html.Partial ( "ViewName")

    @ Html.Partial ( "ViewName", ViewModel)

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

    Se la tua vista parziale si trova in una cartella diversa dalla cartella condivisa, dovrai menzionare il percorso completo della vista come di seguito:

    [email protected] ( "~ / Aree / Amministratore / Vista / comune / parziale / _subcat.cshtml")

Vista parziale con modello

Un modello può anche essere aggiunto alla vista parziale:

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

Nella vista ora puoi usare solo:

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

Vista parziale a una stringa - per contenuto di posta elettronica, ecc

Chiamando la funzione

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

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

Vista parziale - PartialInvoiceCustomer

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

Html.Partial Vs Html.RenderPartial

Html.Partial restituisce una stringa dall'altra parte. Html.RenderPartial restituisce void.

Html.RenderPartial

Questo metodo restituisce void e il risultato viene scritto direttamente nel flusso di risposta HTTP. Ciò significa che utilizza lo stesso oggetto TextWriter utilizzato nella pagina Web / modello corrente. Per questo motivo, questo metodo è più veloce del metodo Parziale. Questo metodo è utile quando la visualizzazione dei dati nella vista parziale è già presente nel modello di visualizzazione corrispondente.

Esempio: in un blog per mostrare i commenti di un articolo, vorremmo utilizzare il metodo RenderPartial poiché le informazioni di un articolo con commenti sono già compilate nel modello di visualizzazione.

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

Html.Partial

Questo metodo restituisce una stringa con codifica HTML. Questo può essere memorizzato in una variabile. Come il metodo RenderPartial, anche il metodo Parziale è utile quando la visualizzazione dei dati nella vista parziale è già presente nel modello di visualizzazione corrispondente.

Esempio: in un blog per mostrare i commenti di un articolo, è possibile utilizzare il metodo parziale poiché le informazioni di un articolo con commenti sono già compilate nel modello di visualizzazione.

@Html.Partial("_Comments")


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow