Integrazione MVC e Umbraco
-
06-07-2019 - |
Domanda
Ho seguito i passaggi da http: // memoryleak.me.uk/2009/04/umbraco-and-aspnet-mvc.html e MVC integrato in Umbraco con successo, ma ho ancora un problema che è fondamentale per me.
Esiste un modo per ereditare i modelli definiti da Umbraco in una vista MVC?
A quanto ho capito il problema è che i modelli Umbraco diventano HTML solo in fase di runtime e le proprietà doctype, come @nodeName
, non sono riconosciute e " Oggetto null riferimento " eccezione generata a causa di questo.
Grazie!
Soluzione
Questa domanda è davvero vecchia e non pertinente alle versioni attuali di Umbraco.
Nel caso in cui qualcuno non fosse ancora a conoscenza - Tutte le versioni di Umbraco dal 2013 (6, 7 e ora 8) supportano MVC
Altri suggerimenti
Dopo aver dato un'occhiata al post sul blog, sembra che questo non sia effettivamente integrato con Umbraco ma che funzioni al fianco di Umbraco.
In quanto è effettivamente il proprio HttpHandler. Ciò significa che sta bypassando Umbraco Httphandler e tutta una serie di funzionalità Umbraco relative ai modelli e al CMS stesso.
Far sì che MVC utilizzi i modelli Umbraco non è (probabilmente) impossibile senza modifiche all'applicazione principale (nella versione 4+). Tuttavia, ciò non significa che non è possibile utilizzare MVC insieme a Umbraco con Umbraco che funge da archivio di contenuti per un'applicazione MVC.
È possibile creare facilmente controller MVC che hanno estratto i dati da Umbraco e li hanno resi disponibili per le visualizzazioni. Ad esempio potresti usare Umbraco Linq2Umbraco per questo.
Se fornisci maggiori dettagli sugli errori precisi che stai riscontrando e esattamente ciò che stai cercando di ottenere, potrebbe essere la soluzione nel modo in cui strutturi la tua applicazione piuttosto che tentare di forzare Umbraco 4+ a fare qualcosa che sarà nativo di Umbraco 5 (che è previsto per il rilascio quest'anno). Il codice sorgente per 5 è su Codeplex e può essere un buon posto per dare un'occhiata e vedere come il nucleo di Umbraco il team si sta avvicinando a questo.
C'è una vecchia discussione al riguardo qui: http: // forum .umbraco.org / yaf_postst5106_Using-ASPNET-MVC-con-Umbraco.aspx
e più recentemente qui: http://our.umbraco.org/forum/getting-started/installing-umbraco/2668-Use-Umbraco-with-aspnet-MVC
Ulteriori discussioni sono disponibili qui: http://our.umbraco.org/forum/developers/extending-umbraco/17523-Umbraco-461-and-MVC-3
e ancora di più qui: http: // nostro .umbraco.org / forum / sviluppatori / estendendo-Umbraco / 6837-Umbraco-Website-E-MVC-Website-in-one
Invece di provare a usare i controlli Umbraco, potresti prendere in considerazione la scrittura di Metodi di estensione HtmlHelper che utilizzano l'ombrello .NodeFactory.Node per ottenere il contenuto che stai tentando di visualizzare nelle visualizzazioni. Scrivere metodi che imitano (o semplificano in base alle tue esigenze) umbraco.presentation.templateControls.Item
e umbraco.presentation.templateControls.Macro
potrebbero essere sufficienti per te.
Modifica
Ho seguito questa strada con un certo successo. Ho anche dato un'occhiata alla fonte MVC per scoprire come
le visualizzazioni parziali sono state aggiunte alla raccolta di controlli dei moduli Web sottostante. Ho finito per scrivere una classe che eredita dalla classe umbraco.presentation.templateControls.Macro
che assomiglia molto alla classe System.Web.Mvc.ViewUserControl
.