宏获取真实的当前页面

时间:2018-03-28 23:07:29

标签: kentico

不确定如何标记此问题的标题。我有一个可重复使用的内容片段,带有订阅图标+社交图标。此代码段通过转发器几乎用于网站的每个页面。

我想要做的是将CurrentDocument.DocumentName附加到订阅图标,以便知道人们来自哪个页面,如下所示: <a href="/subscribe?p={% CurrentDocument.DocumentName #%}">Subscribe</a> 然而,看起来这样不起作用。单击链接时,此字符串显示在地址栏中:www.domain.com/subscribe?p={%%20CurrentDocument.DocumentNamePath%20|(user)|(hash)34ce5eaa55a6a6ad89...%}我认为因为CurrentDocument实际上是指片段本身,而不是浏览器中显示的真实当前页面。你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

你的转发器转换是aspx吗?如果是,请使用<%# %><%# CurrentDocument.DocumentName %>

答案 1 :(得分:0)

如果这是ASCX转换,它就像一个Web用户控件,所以你可以调用C#方法,试试这个

<%# CMS.MacroEngine.MacroResolver.Resolve("{%CurrentDocument.DocumentName#%}")%>

或者你可以在ACSX转型中做到这一点:

<script runat="server">
    string test = "";

    protected override void OnInit(EventArgs e)
    {
        test = CMS.MacroEngine.MacroResolver.Resolve("{%CurrentDocument.DocumentName#%}");
    }
</script>
<h1><%# test%></h1>

了解其他方法的MacroResolver class

P.S。对不起,我没有在肯伊特科检查我的答案。只需确保从正确的名称空间调用MacroResolver。