【问题标题】:Sitecore presentation: Not using XSLT renderings at allSitecore 演示:根本不使用 XSLT 渲染
【发布时间】:2011-10-17 19:51:11
【问题描述】:
我是 Sitecore 的新手,我们的团队正在使用 Sitecore 构建我们的第一个项目。我浏览了很多教程,其中大多数都使用 XSLT 渲染。但我想知道 XSLT 可以完成的所有事情是否也可以通过 Sublayout 完成(例如渲染内容集合)?如果可能的话,我想在这个项目中避免使用 XSLT。
谢谢!
【问题讨论】:
标签:
.net
content-management-system
sitecore
【解决方案1】:
我认为你会在使用 xslt 之前遇到问题,然后再使用 sublayout 方法。我们开始使用 XSLT 开发网站,但几个月后开始使用子布局。我现在无法想象基于 XSLT 构建的新 Web 应用程序。子布局是要走的路,当有很多 xslt 不能自己做的事情时,可以很容易地在子布局方法中完成。最重要的是,您将能够获得 Visual Studio 的好处,并且使用子布局可以实现更多功能。
【解决方案2】:
我建议避免使用 XSLT。它们看起来很容易使用,但在重构时——它们根本无法使用。
您不能使用 Resharper 之类的工具来重构 XSLT,而且每次需要输出值时都无法使用域模型代替字段名称。
如果您需要向 XSLT 添加一些新功能 - 很有可能没有 xsl 扩展是不可能的。您最终会得到许多 CustomXslHelper 类,这些类允许在 XSLT 中使用 Sitecore API 和基本 .NET 操作。
【解决方案3】:
Sitecore 使用了three main types of rendering technologies。它们一起属于“渲染”总称。 XSLT 非常不受欢迎,因为它是自己的语言。 WebControls 和 Sublayouts 是相似但不同的方法来处理几乎相同的事情。两者都是用 C# 实现的。
- XSLT - 使用 XSLT 语言的 XSL 转换文件。使用这些可以实现有限的功能
- WebControls - 这些是编译成 DLL 并用作服务器控件的 C# 类。很多功能可以在这里完成,但需要注意的是前端代码是用 C# 编写的,使用
HtmlTextWriters(IMO:“废话!”)
- 子布局 - 这些是具有前端
ascx 文件和ascx.cs CodeBehind 的用户控件,用于将前端与后端逻辑分开。这就像一个 WebControl,但将设计和逻辑关注点分开,以便于编写可重用的组件。可以在其中创建任何功能,并且可以仅使用子布局(除了布局)来构建整个网站。
对于 Sitecore 关于这些技术的官方文档,它们在
Presentation Component Reference 在选择演示技术部分下的SDN。
我的意见:子布局是要走的路。
【解决方案4】:
可以在 XSLT 中完成的所有操作都可以在 SubLayout(它只是一个 ASCX 或 WebControl)中完成。实际上有些事情在 XSLT 中是很难做到的,而实际上在 SubLayout 中做得更好。
使用 XSLT 的主要原因主要是为了便于输出。输出一些 HTML 和显示字段要容易得多,但这绝不是必需的。
我已经使用 Sitecore 一年了,我没有发现任何我不得不使用 XSLT 的问题。