我已经遵循了http://memoryleak.me.uk/2009/04/umbraco-and-aspnet-mvc.html中的步骤,并将MVC成功集成到Umbraco中,但是我仍然遇到一个对我来说至关重要的问题。
有什么方法可以在MVC视图中继承Umbraco定义的模板吗?据我了解,问题在于Umbraco模板仅在运行时变为HTML,并且doctype属性(如@nodeName
)无法识别,因此引发了“对象空引用”异常。
谢谢!
我已经遵循了http://memoryleak.me.uk/2009/04/umbraco-and-aspnet-mvc.html中的步骤,并将MVC成功集成到Umbraco中,但是我仍然遇到一个对我来说至关重要的问题。
有什么方法可以在MVC视图中继承Umbraco定义的模板吗?据我了解,问题在于Umbraco模板仅在运行时变为HTML,并且doctype属性(如@nodeName
)无法识别,因此引发了“对象空引用”异常。
谢谢!
Answers:
在看过博客帖子后,似乎它实际上并未与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控件,不如考虑编写一些HtmlHelper扩展方法,这些扩展方法使用umbraco.NodeFactory.Node类来获取您尝试在视图中显示的内容。模仿(或根据您的需求简化)umbraco.presentation.templateControls.Item
并umbraco.presentation.templateControls.Macro
足以满足您需求的编写方法。
编辑
我走了这条路,并取得了一些成功。我还查看了MVC源,以了解如何将部分视图添加到基础Web窗体控件集合。我最终写了一个继承自umbraco.presentation.templateControls.Macro
该类的类,该类看起来很像System.Web.Mvc.ViewUserControl
该类。