我已经按照http://memoryleak.me.uk/2009/04/umbraco-and-aspnet-mvc.html中的步骤并在 Umbraco 中成功集成了 MVC,但我仍然有一个对我来说至关重要的问题。
有没有办法在 MVC 视图中继承 Umbraco 定义的模板?据我了解,问题在于 Umbraco 模板仅在运行时变为 HTML @nodeName
,并且无法识别 doctype 属性 as 并且因此引发“对象空引用”异常。
我已经按照http://memoryleak.me.uk/2009/04/umbraco-and-aspnet-mvc.html中的步骤并在 Umbraco 中成功集成了 MVC,但我仍然有一个对我来说至关重要的问题。
有没有办法在 MVC 视图中继承 Umbraco 定义的模板?据我了解,问题在于 Umbraco 模板仅在运行时变为 HTML @nodeName
,并且无法识别 doctype 属性 as 并且因此引发“对象空引用”异常。
这个问题真的很老,与 Umbraco 的当前版本无关。
以防万一有人还不知道 -自 2013 年以来的所有 Umbraco 版本(6、7 和现在 8)都支持 MVC
看过博客文章后,似乎这实际上并没有与 Umbraco 集成,而是与 Umbraco 一起工作。
因为它实际上是它自己的 HttpHandler。这意味着它绕过了 Umbraco Httphandler 和一大堆与模板和 CMS 本身相关的 Umbraco 功能。
如果不修改核心应用程序(在版本 4+ 中),让 MVC 使用 Umbraco 模板(可能)是不可能的。但是,这并不意味着您不能将 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 控件,不如考虑编写一些使用umbraco.NodeFactory.Node类的HtmlHelper 扩展方法来获取您尝试在视图中显示的内容。编写模仿(或根据您的需要简化)并且可能对您来说足够的方法。umbraco.presentation.templateControls.Item
umbraco.presentation.templateControls.Macro
编辑
我走上了这条路并取得了一些成功。我还查看了 MVC 源代码,以了解如何将部分视图添加到底层 Web 表单控件集合中。我最终编写了一个从umbraco.presentation.templateControls.Macro
看起来很像类的类继承的System.Web.Mvc.ViewUserControl
类。
Umbraco 现在正在迁移到 donet 核心 https://umbraco.com/blog/net-core-alpha-release/