Sono uno studente interno che lavora a un progetto. Abbiamo la necessità di utilizzare un layout dinamico. In origine tutto ciò di cui avevamo bisogno era sapere se un input di ricerca dovesse apparire o meno nella barra di navigazione e su quale catalogo si dovrebbe cercare. Ora ci sono più meta-informazioni necessarie per la ricerca e altre barre laterali visualizzate dinamicamente.
Tutte queste informazioni possono essere recuperate dai contesti disponibili in ogni richiesta di pagina, quindi stavo sovrascrivendo il metodo OnActionExecuted
nei progetti baseController
sembrava un po 'come questo.
OnActionExecuted(ActionExecutedContext context)
{
var controllerName = context.ActionDescriptor.ControllerDescriptor.ControllerName
this.ViewBag.Things = getStuff(controllerName);
this.ViewBag.OtherThings = getMoreStuff(contollerName);
//.... about 15 more ViewBag variables....
base.OnActionExecuted(context);
}
Ora nel mio layout e in qualsiasi altra pagina posso utilizzare tutte queste cose. il problema è che ViewBag
sta diventando rapidamente gonfio, e sono sicuro che troveranno cose più dinamiche da inserire nel layout. Anche questo sembra promuovere un approccio un po 'ad-hoc con il quale non sono del tutto a mio agio.
Invece penso che mi sposterò a usare renderAction
nel layout per queste parti dinamiche e rinunciare a gran parte delle proprietà ViewBag
. C'è uno svantaggio principale nell'usare renderAction
di cui non sono a conoscenza? Sono sopra l'ingegneria e va bene con l'approccio ViewBag
heavy?
Ho provato a riprendere un layout così dinamico perché sembra una scelta di design bizzarra ma insistono per averlo, quindi sono curioso di approcciarmi ad una cosa del genere. Il mio attuale approccio funziona, ma sembra negativo per la manutenibilità e la crescita del sito.