【问题标题】:How to get objects in a razor template in Tridion?如何在 Tridion 的剃刀模板中获取对象?
【发布时间】:2012-08-06 20:54:46
【问题描述】:

我正在编写一个通用的 Razor TBB,它将根据我的要求在组件模板和页面模板中使用。

因此,根据在页面模板和组件模板上应用 TBB,我需要剃刀 TBB 中的页面和组件对象

我要求在页面的特定区域显示/使用来自页面/组件的元数据字段值。

这就是为什么,我想通过对象访问元数据值但无法获取对象,

还请与 Frank 一起跟进我的 cmets。

谁能推荐我?

【问题讨论】:

  • 实际上,我正在为组件和页面创建一个通用的 TBB,用于访问元数据值。我需要从组件和页面访问元数据值,然后使用这些值来呈现常见的 html,并希望通过 Package.Output 访问
  • 能否请您编辑您的问题并更详细地提供您想要做什么、您做了什么以及您遇到的问题?
  • 后续 cmets 中的重要信息,+1 将它们移到原始问题中。我很乐意投票支持整个故事,因为它可能对其他人有所帮助。中介作者还要求实施者通过电子邮件向他发送反馈问题。我还建议与他合作和/或在 Google 代码存储库中提交问题。

标签: tridion razor-mediator


【解决方案1】:

您是否查看过 Razor 调解器可用的(非常有用的)文档?

这些都是访问当前组件和页面的示例。仅我 10 秒的搜索就给出了这些片段:

<body class=”@Page.Metadata.BodyClass”>

<div class=”@Component.Fields.NewsStyle”>

<img src=”@Fields.HeaderImage.ID” alt=”@Fields.HeaderImage.AltText” />

编辑:我看到您在后续评论中添加了更多细节。您可能希望按照 Bart 的建议进行操作,并将这些详细信息添加到问题中。同时,我会再花几分钟时间为您搜索文档。

官方文档(我上面链接的 Word 文档)包含这个似乎处理元数据的示例:

@foreach (var keyword in Publication.MetaData.SomeKeywordFields) {
    <li>@keyword.Title (@keyword.Id)</li>
}

Razor 模板的输出将成为包中的输出项。因此,使用 Razor 调解器处理输出项没有任何意义。为此,您不妨使用常规 C#(片段或程序集)TBB。

另一个编辑:似乎 Razor 中介的隐式 Fields 变量始终映射到组件字段,而 Metadata 变量始终映射到组件的肉类数据字段.为方便起见,我已将上述名称链接到 Google 代码中的相关片段。

所以你似乎有两个选择:

  1. 检测你是在页面还是组件中(例如,通过查看隐含的Page 变量是否为null)然后到处都有条件表达式(isInPage ? Page.Metadata : Metadata)
  2. 您自己修复 Razor mediator code 的此限制或聘请 someone 为您修复它

【讨论】:

  • 嗨弗兰克,感谢您的回复,实际上,我的问题有点不同,正如我之前写的,我正在创建一个 TBB,它将用于组件模板和页面模板。我在组件模板中创建了一个 TBB 并且它工作正常,但是当我在页面模板中使用这个 tbb 时,它会在“在这个上下文中找不到组件”中返回一个错误,因为我正在访问这个 TBB 中的元数据值。我可以在两种类型的模板中使用一个 TBB 吗?
  • 既然 Razor 调解器是一个开源项目,您是否考虑过只看源代码?当然,在最坏的情况下,您可以尝试/捕获异常并将其用作您在组件模板中的指示。
  • 我试过 try/catch 但是,它的搜索组件 Context。因为,默认情况下,当我编写 Metadata.SomeFieldName 时,它​​会访问 Component 的元数据值,并给出页面模板的错误,但是当我编写 Page.Metadata.SomeFieldName 时,它​​可以正常工作。
  • 那么,您是否查看了 Razor 调解器的来源?我可以为你做这件事,但考虑到你显然已经为此付出了很多努力,这也可能是你愿意自己做的事情。
  • 您应该也确实将这些额外的细节添加到您的原始问题中。你收到了很多反对票,很可能部分是因为这个问题没有显示出你的任何努力。现在事实证明,您所做的比最初建议的问题要多。因此,如果您更新问题,人们可能会更喜欢它。这也有助于意识到这里的大多数人更喜欢调试你的代码而不是调试你的散文。所以分享代码,而不是描述它的作用。
猜你喜欢
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多