如何获取标题字段而不是网址

时间:2016-03-23 13:51:31

标签: c# sitecore

我有一个菜单可以抓取sitecore中url的路径并将其与实际url相匹配。 IE:

Home / Main / Folder / this-is-the-title = www.website.com/this-is-the-title

我要做的是使用"标题" Sitecore中的字段,用于在页面上显示标题而不是路径属性。

HTML

<ItemTemplate>
    <div class="leftNavImage">
       <li>
        <asp:HyperLink ID="innerHyperLink" runat="server" ></asp:HyperLink>
       </li>
    </div>
</ItemTemplate>

C#

if (innerItem != null)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        // this creates a link to the page in sitecore once clicked
        HyperLink topNavigation = (HyperLink)e.Item.FindControl("innerHyperLink");
        topNavigation.NavigateUrl = LinkManager.GetItemUrl(innerItem);
        topNavigation.Text = innerItem.Name;
    }
}

我尝试在Hyperlink之间添加前端,但它所做的就是获取标题并使用所有链接而不是页面链接进行复制。我还尝试在后端设置一个变量来表示Title,但它没有合作,var title = Sitecore.Context.Item [&#34; Title&#34;]。ToString; 。我确定这是一个简单的答案,但我似乎错过了它。

2 个答案:

答案 0 :(得分:2)

  if (innerItem != null)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            // this creates a link to the page in sitecore once clicked
            HyperLink topNavigation = (HyperLink)e.Item.FindControl("innerHyperLink");
            topNavigation.NavigateUrl = LinkManager.GetItemUrl(innerItem);
            topNavigation.Text = innerItem["Title"];

        }
    }

答案 1 :(得分:2)

您也可以使用sc:Textsc:FieldRenderer控件并在转发器中设置项目:

<ItemTemplate>
    <div class="leftNavImage">
        <li>
            <asp:HyperLink ID="innerHyperLink" runat="server" >
                <sc:Text Field="Title" Item="<%# Container.DataItem %>" runat="server" />
            </asp:HyperLink>
        </li>
    </div>
</ItemTemplate>

如果您想彻底摆脱代码背后的代码,可以将asp:HyperLink替换为:

<a href="<%# Sitecore.Links.LinkManager.GetItemUrl((Sitecore.Data.Items.Item) Container.DataItem) %>">
    <sc:Text Field="Title" Item="<%# Container.DataItem %>" runat="server" />
</a>