Интеграция MVC и Umbraco

Я успешно выполнил шаги из http://memoryleak.me.uk/2009/04/umbraco-and-aspnet-mvc.html и с успехом интегрировал MVC в Umbraco, но у меня все еще есть проблема, которая важна для меня.

Есть ли способ наследовать определенные шаблоны Umbraco в представлении MVC? Насколько я понимаю, проблема заключается в том, что шаблоны Umbraco становятся HTML только во время выполнения, а свойства doctype, как @nodeName, не распознаются и исключаются исключение "null null reference" из-за этого.

Спасибо!

Ответ 1

Этот вопрос действительно старый и не относится к текущим версиям Umbraco.

На всякий случай, кто-нибудь еще не знает - Umbraco 6 и 7 теперь поддерживают MVC и сделали это с 2013 года

Ответ 2

Взглянув на сообщение в блоге, кажется, что это фактически не интегрировано с Umbraco, а работает вместе с Umbraco.

В том, что это фактически собственный HttpHandler. Это означает, что он обходит Umbraco Httphandler и целую кучу функциональности Umbraco, относящуюся к шаблонам и самой CMS.

Получение MVC для использования шаблонов Umbraco (возможно) невозможно без изменений основного приложения (в версии 4+). Однако это не означает, что вы не можете использовать MVC вместе с Umbraco с Umbraco, действующим как хранилище контента для приложения MVC.

Вы можете легко создавать MVC-контроллеры, которые извлекали данные из Umbraco и делали доступными ваши представления. Например, вы можете использовать Umbraco Linq2Umbraco для этого.

Если вы дадите более подробную информацию о точных ошибках, которые вы получаете, и что именно вы пытаетесь достичь, возможно, решение заключается в том, как вы структурируете свое приложение, а не пытаетесь переборщить Umbraco 4+, чтобы сделать что-то, что будет родным в Umbraco 5 (который планируется выпустить в этом году). Исходный код для 5 находится на Codeplex и может быть хорошим местом, чтобы посмотреть и посмотреть, как основная команда Umbraco приближается к этому.

Существует старая дискуссия об этом здесь: http://forum.umbraco.org/yaf_postst5106_Using-ASPNET-MVC-with-Umbraco.aspx

и совсем недавно здесь: http://our.umbraco.org/forum/getting-started/installing-umbraco/2668-Use-Umbraco-with-aspnet-MVC

Дальнейшее обсуждение можно найти здесь: http://our.umbraco.org/forum/developers/extending-umbraco/17523-Umbraco-461-and-MVC-3

и даже больше здесь: http://our.umbraco.org/forum/developers/extending-umbraco/6837-Umbraco-Website-And-MVC-Website-In-ONE

Ответ 3

Вместо того, чтобы пытаться использовать элементы управления Umbraco, вы можете написать несколько методов HtmlHelper, которые используют umbraco.NodeFactory.Node, чтобы получить контент, который вы хотите отобразить в своих представлениях. Способы записи, которые имитируют (или упрощают на основе ваших потребностей) umbraco.presentation.templateControls.Item и umbraco.presentation.templateControls.Macro, могут быть достаточно для вас.

ИЗМЕНИТЬ

Я пошел по этому пути с некоторым успехом. Я также посмотрел источник MVC, чтобы узнать, как частичные представления добавлялись к коллекции управления базовыми веб-формами. В итоге я написал класс, который наследуется от класса umbraco.presentation.templateControls.Macro, который очень похож на класс System.Web.Mvc.ViewUserControl.