Integración MVC y Umbraco


He seguido los pasos de http://memoryleak.me.uk/2009/04/umbraco-and-aspnet-mvc.html y MVC integrado en Umbraco con éxito, pero todavía tengo un problema que es crítico para mí.

¿Hay alguna forma de heredar las plantillas definidas por Umbraco en una vista MVC? Según entiendo, el problema es que las plantillas de Umbraco se convierten en HTML solo en tiempo de ejecución y las propiedades doctype, como @nodeName, no se reconocen y la excepción de" Referencia nula de objeto " se lanza debido a este.

¡Gracias!

Author: Marko Jovanov, 2009-11-28

3 answers

Esta pregunta es muy antigua y no es relevante para las versiones actuales de Umbraco.

En caso de que alguien aún no lo sepa - Umbraco 6 y 7 ahora soportan MVC.

 5
Author: wingyip,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-13 14:04:30

Después de haber echado un vistazo a la entrada del blog, parece que esto no está realmente integrado con Umbraco, sino que trabaja junto a Umbraco.

En que es efectivamente su propio HttpHandler. Esto significa que está pasando por alto el Httphandler de Umbraco y un montón de funcionalidades de Umbraco relacionadas con las plantillas y el propio CMS.

Conseguir que MVC utilice plantillas Umbraco no es (probablemente) posible sin modificaciones en la aplicación principal (en la versión 4+). Sin embargo, eso no significa que no se puede usar MVC junto con Umbraco con Umbraco actuando como un repositorio de contenido para una aplicación MVC.

Puede crear fácilmente controladores MVC que extraigan datos de Umbraco y los pongan a disposición de sus vistas. Por ejemplo, podría usar Umbraco Linq2Umbraco para esto.

Si da más detalles sobre los errores precisos que está recibiendo y exactamente lo que está tratando de lograr, puede ser que la solución esté en cómo estructurar su aplicación en lugar de intentar brute fuerza Umbraco 4 + para hacer algo que será nativo en Umbraco 5 (que está programado para su lanzamiento en algún momento de este año). El código fuente de 5 está en Codeplex y puede ser un buen lugar para echar un vistazo y ver cómo el equipo central de Umbraco está abordando esto.

Hay una vieja discusión sobre esto aquí: http://forum.umbraco.org/yaf_postst5106_Using-ASPNET-MVC-with-Umbraco.aspx

Y más recientemente aquí: http://our.umbraco.org/forum/getting-started/installing-umbraco/2668-Use-Umbraco-with-aspnet-MVC

Puede encontrar más información aquí: http://our.umbraco.org/forum/developers/extending-umbraco/17523-Umbraco-461-and-MVC-3

Y aún más aquí: http://our.umbraco.org/forum/developers/extending-umbraco/6837-Umbraco-Website-And-MVC-Website-In-ONE

 5
Author: Tim Saunders,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-11 16:45:46

En lugar de intentar usar los controles Umbraco, podría considerar escribir algunos métodos de extensión HtmlHelper que usen umbraco.NodeFactory.Node clase para obtener el contenido que está tratando de mostrar en sus vistas. Los métodos de escritura que imitan (o simplifican según sus necesidades) umbraco.presentation.templateControls.Item y umbraco.presentation.templateControls.Macro pueden ser suficientes para usted.

EDITAR

Fui por este camino con cierto éxito. También eché un vistazo a la fuente MVC para averiguar cómo las vistas parciales fueron se agrega a la colección de controles de formularios web subyacente. Terminé escribiendo una clase que hereda de la clase umbraco.presentation.templateControls.Macro que se parece mucho a la clase System.Web.Mvc.ViewUserControl.

 2
Author: Aaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-14 13:37:39