Mi piace utilizzare il metodo di estensione RenderAction
sull'oggetto HtmlHelper
per eseguire il rendering di barre laterali e simili nelle pagine, in quanto consente di mantenere il codice di accesso ai dati per ciascuna di tali parti in metodi separati sul controller. Usando una base di controller astratta, posso definire una "strategia sidebar" predefinita, che può quindi essere ridefinita sovrascrivendo il metodo in un controller concreto, quando necessario.Come Html.RenderAction() ma senza reintegrare l'oggetto controller
L'unico "problema" che ho con questo approccio, è che il RenderAction
è costruito in un modo in cui crea sempre un'istanza di notizie della classe controller, anche quando si eseguono azioni dal controller già in azione. Alcuni dei miei controller eseguono alcune ricerche di dati nel loro metodo Initialize
e l'utilizzo del metodo RenderAction
nella vista fa sì che ciò si verifichi più volte nella stessa richiesta.
Esiste un'alternativa a RenderAction
che riutilizzerà l'oggetto controller se il metodo di azione da richiamare si trova sulla stessa classe di controller dell'azione "padre"?
Perché questo è un problema per voi? Non fai l'ottimizzazione prematura? – queen3
@ queen3: Forse, ma non è questa la domanda :) –