我最近一直在研究Kentico网站,最近发生了以下问题,并且从未想过这不起作用。
我在Kentico 8上有一个模板,我想显示存储在当前文档类型的'ContentText'字段中的内容。
因此,我使用以下代码:
<cms:CMSDocumentValue runat="server" AttributeName="ContentText" FormattingString="{0}" />
这工作绝对正常。但是,如果我去使用宏,如下所示:
<%# CurrentDocument.GetStringValue("ContentText", String.Empty) %>
根本不会提取存储在该字段上的内容。 谁知道我哪里错了?我很确定语法是正确的。
我想使用宏的原因是因为我可能正在使用它来检查值是否为null,因此我可以更改占位符的可见性。
希望有人可以帮助我。
谢谢。
答案 0 :(得分:4)
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>