6

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

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

  1. 在什么类型的场景下,我们应该将 MVC3.0 剃须刀视图移至 sitecore?

  2. 将 MVC3.0 迁移到 sitecore 的关键问题是什么?

  3. 我需要在 sitecore 管道上注入任何东西吗?

  4. 我是否需要更改任何导航链接才能在 sitecore 下工作?

  5. 任何指向迁移现有 Web 应用程序的 sitecore 最佳实践的链接都很好。

我关注了下面的博客,但仍然不清楚为什么以及何时应该将 Web 控制和剃刀视图转换为 Sitecore 渲染。

谢谢你。

4

1 回答 1

9

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

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

1. 何时使用 Razor 视图

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

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

2. 迁移陷阱

将 MVC 应用程序迁移到 Sitecore 时可能会引起您注意的一些事情。

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

3.流水线定制

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

4.导航链接

如果您的导航端点是 Sitecore 项目路由(即网站上项目的路径),您应该使用 SitecoreLinkManager生成适当的链接。如果端点是标准 MVC 路由RouteLink并且ActionLink应该可以正常工作。

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

5. 最佳实践迁移博客文章

我不知道有任何博客文章或文章涉及 Sitecore MVC 迁移最佳实践。请记住,完整的 MVC 支持是 Sitecore 最近新增的功能,而且还没有多少人从头到尾看到这一旅程。

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

您在结束问题时表示您仍然对何时以及为何将控件和 Razor 视图转换为 Sitecore 渲染感到困惑。以下是一些可以作为 Sitecore 渲染候选对象的指标:

  • 它是一个可以在许多页面上重复使用的组件。
  • 您希望 Sitecore 用户能够将组件添加到页面。(想想页面编辑器)
  • 您想利用 Sitecore 的组件级缓存。
  • 您想利用 Sitecore 安全性来限制谁可以使用/查看该组件。
  • 您想通过个性化、规则来控制组件或在其上运行 MVT。

在 MVC 的上下文中,这里有一些指标表明将某些内容转换为 Sitecore 渲染可能是不正确的:

  • 它严重依赖于路由和路由参数。

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

于 2013-03-12T10:29:55.487 回答