2016-05-03 21 views
6

Ho un'applicazione Sitecore che utilizzano questo metodo:Sitecore View Rendering e controller di rendering Helper

@Html.Sitecore().ViewRendering("Path to the View") 
@Html.Sitecore().Controller("Controller Name", "Controller Action") 

Questo funziona benissimo anche senza creo un elemento per che il rendering in Sitecore CMS

Allora che cosa è la differenza tra quel metodo con il semplice metodo ASP MVC:

@Html.Partial("Path to the View") 
@Html.Action("Controller Name", "Controller Action") 

Entrambi uguali o no? Mi sento poco confuso qui

risposta

10
@Html.Sitecore().ViewRendering("Path to the View") 

attiveranno mvc.renderRendering pipeline. E la tua vista sarà resa quasi allo stesso modo se la aggiungi a segnaposto. Differenza da Html.Partial è nel ciclo di elaborazione della vista. Il risultato del rendering potrebbe essere diverso se si dipende da qualcosa in quella pipeline (ad esempio caching come menzionato @Gatogordo). (o se hai aggiunto qualche processore da solo). Se si vuole si renderizzando essere lo stesso se vengono aggiunti tramite segnaposto quindi utilizzare Html.Sitecore(). ViewRendering

Per

@Html.Sitecore().Controller("Controller Name", "Controller Action") 

e

@Html.Action("Controller Name", "Controller Action") 

differenza è anche in è il ciclo di vita dell'esecuzione. Quelli Sitecore vengono eseguiti tramite ControllerRunner che diventa Controller da SitecoreControllerFactory ed eseguire alcune azioni. L'azione ASP.Net MVC viene eseguita tramite HttpContext.Server.Execute e fa lo stesso. Ma guardando l'implementazione posso dare per scontato una delle differenze nel routing. Nel caso in cui si utilizzi l'helper di ASP.Net MVC, i valori del percorso possono portarti ad un oggetto Sitecore piuttosto che un'azione del controller richiesta se corrisponderà. L'helper Sitecore eseguirà sempre il controller.

Se sono necessari ulteriori dettagli è possibile aprire System.Web.Mvc.Html.ChildActionExtensions.Action e Sitecore.Mvc.Helpers.SitecoreHelper.Controller in reflector e confrontarli passo dopo passo.

+0

Grazie, buone spiegazioni – gill23

1

Entrambi sono simili ma non esattamente uguali. Quelli dell'assistente Sitecore aggiungeranno un po 'di sapore Sitecore ai comuni mvc (ad esempio aggiungendo possibilità di caching) ma avranno anche un (piccolo) successo nelle prestazioni.

E 'una scelta che deve essere fatta, e dipende dalla vostra resa e il contesto ..