sitecore - 将 MVC Web 迁移到 Sitecore 的最佳实践

标签 sitecore sitecore6

我们有几个 MVC 3.0 Web 应用程序,其中一些在项目/解决方案中结合了 Web 窗体和 MVC3.0。

我是 sitecore 的新手,有人可以帮助我了解以下有关将现有应用程序迁移到 Sitecore 的内容吗?

  • 在什么类型的场景中,我们应该将 MVC3.0 razor View 移动到 sitecore?
  • 将 MVC3.0 迁移到 sitecore 的关键问题是什么?
  • 我需要在 sitecore 管道上注入(inject)任何东西吗?
  • 我是否需要更改任何导航链接才能在 sitecore 下工作?
  • 任何指向迁移现有 Web 应用程序的 sitecore 最佳实践的链接都很好。

  • 我关注了下面的博客,但仍然不清楚为什么以及何时应该将 Web 控件和 Razor View 转换为 Sitecore 渲染。

    谢谢你。

    最佳答案

    将 MVC 应用程序迁移到 Sitecore 解决方案时,您有几个可用选项 - 根据您要迁移的组件的性质,您必须选择最合适的选项。

    我将尝试解决您的 5 个具体问题:

    1. 何时使用 Razor View

    我不确定问题是“何时使用 Razor View ”还是“何时使用 Sitecore View 渲染”——我会假设是后者。

    如果您正在编写不需要任何业务逻辑且仅处理渲染项目的演示组件,则 View 渲染非常有用。如果您正在考虑在 Razor View 中添加代码,您可能应该考虑 Controller 渲染是否更合适,或者自定义 mvc.getModel管道。

    2. 迁移问题

    在将 MVC 应用程序迁移到 Sitecore 时,您可能会发现一些问题。

  • 基于组件的 Controller - 在 MVC 中,每页有一个 Controller 。 Sitecore 支持 ControllerRenderings 的概念,它允许您在一个页面上拥有多个 Controller (注意:总会有一个路由 Controller 可以被视为主要的)。
  • 项目路由 - Sitecore 有一个捕获所有路由,该路由对映射到项目路径的所有路径有效。标准 MVC 路由和“项目路由”可以愉快地共存。项目路由目前不支持路由参数(例如,您不能在项目路由上指定 {action} 或其他参数)。
  • MVC4 - 目前没有对 MVC4 的官方支持(这不会持续很长时间 - 但同时看看 http://herskind.co.uk/blog/2012/10/sitecore-66-mvc4)
  • 区域 - 目前不完全支持区域。
  • 不知道要使用什么渲染类型以及何时将现有功能转换为组件。

  • 3.管道定制

    您不必自定义 Sitecore 管道。我可以看到一些示例,其中在迁移故事的上下文中修改管道会很有用。我最近在 Sitecore 用户组中谈到的一个例子涉及添加 ActionFilter全局(通过 mvc.resultExecuting 管道)将 ASP.Net MVC 应用程序注入(inject)到 Sitecore 占位符中。在我的示例中,我将 MVC Music Store 注入(inject)了一个占位符,并让 Sitecore 控制了橱窗装饰(页眉/页脚/菜单)。通过这种方式,我可以将现有的 MVC 应用程序引入 Sitecore,而无需对其进行太多更改。

    4.导航链接

    如果您的导航端点是 Sitecore 项目路线(即网站上项目的路径),您应该使用 Sitecore 的 LinkManager生成适当的链接。如果端点是标准 MVC 路由 RouteLinkActionLink应该工作得很好。

    我想如果没有具体的例子,答案将是“也许”。

    5. 最佳实践迁移博文

    我不知道有任何关于 Sitecore MVC 迁移最佳实践的博客文章或文章。请记住,全面的 MVC 支持是 Sitecore 最近新增的功能,从头到尾看到这段旅程的人并不多。

    为什么以及何时转换为 Sitecore 渲染

    您结束了您的问题,指出您仍然对何时以及为何将控件和 Razor View 转换为 Sitecore 渲染感到困惑。以下是一些可以作为 Sitecore 渲染候选的指标:
  • 它是一个可以在许多页面上重复使用的组件。
  • 您希望让 Sitecore 用户能够将组件添加到页面。 (想想页面编辑器)
  • 您想利用 Sitecore 的组件级缓存。
  • 您想利用 Sitecore 安全性来限制谁可以使用/查看组件。
  • 您希望通过个性化、规则或在其上运行 MVT 来控制组件。

  • 在 MVC 的上下文中,这里有一些指标表明将某些内容转换为 Sitecore 渲染可能是不正确的:
  • 它严重依赖路由和路由参数。

  • 我确信这个答案中的许多要点都可以扩展,我知道对此没有明确的规则 - 但我希望这个答案有助于消除一些困惑......

    关于sitecore - 将 MVC Web 迁移到 Sitecore 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15320113/

    相关文章:

    sitecore - 从序列化项目创建包

    asp.net - 如何将 Sitecore Droptree 源设置为项目本身

    SiteCore - System.Security.Cryptography.CryptographicException - 系统找不到指定的路径

    Sitecore - 如何预览不可发布的项目

    sitecore - 从 ASHX 处理程序跟踪页面事件

    hyperlink - 如何在 Sitecore 中使用带有通配符项的内部链接?

    editor - 更新到 6.6 后 Sitecore 页面编辑器无法工作

    html - 具有 html 属性的 Sitecore 项目 - Webforms

    validation - Sitecore WFFM 必填字段的客户端验证

    telerik - 自定义 Sitecore 富文本编辑器的默认配置