我是一名Web Forms开发人员,拥有一些.NET MVC经验,对Umbraco来说是新手,并且在我学习的过程中学习。
到目前为止,我一直在关注Umbraco文档和视频设置,这意味着我的所有控制器都继承自“Controller Base”,其中包含常用功能,这本身就是继承自SurfaceController。
最近,我注意到一些博客和外部参考资料引用了基类中的RenderMvcController而不是SurfaceController - 现在Umbraco文档不清楚两者之间的真正差异,也不应该在哪些情况下使用它们。
表面控制器的想象使用场景之间是否有明显的区别 - 继承自 Umbraco.Web.Mvc.SurfaceController 和自定义控制器 - 继承来自 Umbraco.Web.Mvc.RenderMvcController ?
谢谢!
答案 0 :(得分:17)
SurfaceController
的文档位于:http://our.umbraco.org/documentation/Reference/Templating/Mvc/surface-controllers
简而言之,SurfaceController
用于帮助与视图交互。例如,您可以将表单发布到表面控制器。或者您可以使用SurfaceController
RenderMvcController
仅用于路由到已发布的网页。因此,您可以对RenderMvcController
进行细分,以便劫持'请求发布特定文档类型的页面。见http://our.umbraco.org/documentation/Reference/Templating/Mvc/custom-controllers。
答案 1 :(得分:7)
根据Digbyswift的回答进一步澄清:
SurfaceController
= API或表单目标(然后重定向)
RenderMvcController
=构建模型的自定义逻辑或为内容项选择视图(基于文档类型和(可选)模板)