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

Nil*_*Pun 6 sitecore sitecore6

我们有一些MVC 3.0 Web应用程序,其中一些是Web Form和MVC3.0在项目/解决方案中的组合.

我对sitecore很陌生,有人可以帮我理解以下关于将现有应用程序迁移到Sitecore的问题吗?

  1. 我们应该在什么类型的场景中将MVC3.0剃刀视图移动到sitecore?

  2. 将MVC3.0迁移到sitecore有哪些关键问题?

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

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

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

我按照下面的博客,仍然不清楚为什么以及何时应该将网页控件和剃刀视图转换为Sitecore渲染.

谢谢.

her*_*duk 9

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

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

1.何时使用Razor视图

我不确定问题是"何时使用Razor视图"或问题是"何时使用Sitecore View Rendering" - 我将假设后者.

如果您正在编写不需要任何业务逻辑且仅处理渲染项的演示组件,则View Rendering非常有用.如果您正在考虑在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项目路线(ei是网站上项目的路径),您应该使用Sitecore LinkManager来生成相应的链接.如果端点是标准的MVC路由RouteLink,ActionLink应该可以正常工作.

我想如果没有一个具体的例子,答案将是"也许".

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

我不知道任何关于Sitecore MVC迁移最佳实践的博客文章或文章.请记住,完整的MVC支持是Sitecore的最新成员,但从开始到结束还没有多少人见过.

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

你结束了你的问题,说明你仍然对何时以及为什么要将控件和Razor视图转换为Sitecore渲染感到困惑.以下是一些指标,表明某些东西是Sitecore渲染的候选者:

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

在MVC的上下文中,有一些指标可能不适合将某些内容转换为Sitecore呈现:

  • 它在很大程度上依赖于路由和路由参数.

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