Ответ 1
Этот вопрос действительно старый и не относится к текущим версиям Umbraco.
На всякий случай, кто-нибудь еще не знает - Umbraco 6 и 7 теперь поддерживают MVC и сделали это с 2013 года
Я успешно выполнил шаги из http://memoryleak.me.uk/2009/04/umbraco-and-aspnet-mvc.html и с успехом интегрировал MVC в Umbraco, но у меня все еще есть проблема, которая важна для меня.
Есть ли способ наследовать определенные шаблоны Umbraco в представлении MVC?
Насколько я понимаю, проблема заключается в том, что шаблоны Umbraco становятся HTML только во время выполнения, а свойства doctype, как @nodeName
, не распознаются и исключаются исключение "null null reference" из-за этого.
Спасибо!
Этот вопрос действительно старый и не относится к текущим версиям Umbraco.
На всякий случай, кто-нибудь еще не знает - Umbraco 6 и 7 теперь поддерживают MVC и сделали это с 2013 года
Взглянув на сообщение в блоге, кажется, что это фактически не интегрировано с 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
Вместо того, чтобы пытаться использовать элементы управления Umbraco, вы можете написать несколько методов HtmlHelper, которые используют umbraco.NodeFactory.Node, чтобы получить контент, который вы хотите отобразить в своих представлениях. Способы записи, которые имитируют (или упрощают на основе ваших потребностей) umbraco.presentation.templateControls.Item
и umbraco.presentation.templateControls.Macro
, могут быть достаточно для вас.
ИЗМЕНИТЬ
Я пошел по этому пути с некоторым успехом. Я также посмотрел источник MVC, чтобы узнать, как
частичные представления добавлялись к коллекции управления базовыми веб-формами. В итоге я написал класс, который наследуется от класса umbraco.presentation.templateControls.Macro
, который очень похож на класс System.Web.Mvc.ViewUserControl
.