模板内的 Kentico 宏方法不起作用

Kentico macro method inside template not working

最近一直在做Kentico网站,最近出现了如下问题,没想到不行。

我在Kentico 8上有一个模板,我想显示存储在当前文档类型的'ContentText'字段中的内容。

为此,我使用了以下代码:

<cms:CMSDocumentValue runat="server" AttributeName="ContentText" FormattingString="{0}" />

它工作得非常好。但是,如果我去使用宏,如下所示:

<%# CurrentDocument.GetStringValue("ContentText", String.Empty) %>

它根本不会提取存储在该字段上的内容。 有谁知道我哪里出错了?我很确定语法是正确的。

我之所以要使用宏,是因为我可能会用它来检查值是否为空,因此我可以更改占位符的可见性。

希望有人能帮助我解决这个问题。

谢谢。

Kentico 宏 (K#) 不会在页面模板标记中自动解析。此外,数据绑定表达式 (<%# ... %>) 中不允许使用 K#。通常,在页面模板中,您可以使用以下代码解析宏:

<%@ Import Namespace="CMS.MacroEngine" %>
<%= MacroContext.CurrentResolver.ResolveMacros("{% here comes your macro expression %}")%>

如果我对你的问题理解正确,你想根据当前页面字段的值在页面中隐藏一些 asp:PlaceHolder 控件。此代码可能会帮助您而不是调用宏:

<%@ Import Namespace="CMS.DocumentEngine" %>
<script runat="server">
  protected void Page_Load(object sender, EventArgs e)
  {
    yourPlaceHolderControl.Visible = !String.IsNullOrEmpty(DocumentContext.CurrentDocument.GetStringValue("Intro", String.Empty));
  }
</script>