【问题标题】:Surface Controller or Custom Controller in Umbraco 7?Umbraco 7 中的 Surface 控制器或自定义控制器?
【发布时间】:2014-09-01 10:26:22
【问题描述】:

历史

我是一名 Web 表单开发人员,具有一些 .NET MVC 经验,是 Umbraco 的新手,并且在学习过程中不断学习。

到目前为止,我一直在关注 Umbraco 文档和视频进行设置,这意味着我的所有控制器都继承自“Controller Base”,其中包含常用功能,该控制器本身继承自 SurfaceController。

然而,最近,我注意到一些博主和外部参考资料在基类中引用了 RenderMvcController 而不是 SurfaceController - 现在 Umbraco 文档不清楚两者之间的真正区别,也不清楚您应该在哪些情况下使用它们。

问题

Surface Controller 的想象使用场景 - 从 Umbraco.Web.Mvc.SurfaceController 和自定义控制器 - 继承之间是否有明显的区别?来自 Umbraco.Web.Mvc.RenderMvcController

谢谢!

【问题讨论】:

    标签: c# asp.net-mvc umbraco umbraco7


    【解决方案1】:

    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

    【讨论】:

    • SurfaceController 通常也用于公开使用 Umbraco 内容的 API。
    • 是的,它可以是但不应该是,因为有UmbracoApiController就是为了这个目的。表面控制器的两个主要用途是表单交互和子操作。
    【解决方案2】:

    根据 Digbyswift 的回答进一步澄清:

    SurfaceController = API 或表单目标(然后重定向)

    RenderMvcController = 用于构建模型或为内容项选择视图的自定义逻辑(基于文档类型和可选的模板)

    【讨论】:

    • 虽然你说得对,它可以用于 API,但我个人并不推荐它。 Umbraco 专门为此目的提供了UmbracoApiController。与使用 SurfaceController 相比,此方法的开销更少。此外,使用表面控制器将所有 API 代码与特定于 MVC 的表单处理和子操作代码混为一谈,我个人认为这不是很好。然后也可以为 API 定义单独的路由。
    • 好电话@Digbyswift!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多