SiteCore Link不添加属性

时间:2012-07-18 20:55:31

标签: c# asp.net sitecore

我正在使用Sitecore并使用VS2010(第4版)。我根据用户转到的选项卡索引从后面的代码中添加属性:

Link hlTabLink;
i = e.Item.DataItem as Item;
hlTabLink = e.Item.FindControl("hlTabLink") as Link;
hlTabLink.Target = Sitecore.Links.LinkManager.GetItemUrl(i);
hlTabLink.DataSource = i.Paths.FullPath;
hlTabLink.Field = "Title";
String liContainerId;
switch (hlTabLink.TabIndex) //Switch case statements for the tab navigation. 
            {
                case 0:
                    liContainerId = "tab-label TabbedPanelsTabSelected";
                    hlTabLink.Attributes.Add("class", liContainerId);
                    break;
                case 1:
                    liContainerId = "tab-label TabbedPanelsTabSelected";
                    hlTabLink.Attributes.Add("class", liContainerId);
                    break;
                case 2:
                    liContainerId = "tab-label last";
                    hlTabLink.Attributes.Add("class", liContainerId);
                    break;
            }

这是.ascx控件的标记:

<div class="tab-panels" id="TabbedPanels1">
    <ul id="Tab-labels">
       <asp:Repeater ID="rptTab" runat="server" OnItemDataBound="rptTab_ItemBound">
            <ItemTemplate>
                <li>
                    <sc:Link ID = "hlTabLink" Field = "scTabLink" runat ="server"></sc:Link>
                </li>
            </ItemTemplate>
       </asp:Repeater>
    </ul>

渲染后我的标记看起来像这样:

<div class="tab-panels" id="TabbedPanels1">
    <ul id="Tab-labels">

                <li>
                    Overview
                </li>

                <li>
                    Why Me
                </li>

    </ul>

我在这里做错了什么?

3 个答案:

答案 0 :(得分:3)

我怀疑你没有做错任何事......只是Sitecore.Web.UI.WebControls.Link对象没有费心去渲染你的额外属性。使用Reflector确认一下代码。

用HyperLink替换Sitecore Link对象。看来你在这里没做任何保证使用Sitecore控件而不是标准ASP.NET对象。

答案 1 :(得分:1)

在Sitecore命名空间中,Link是ASP:Hyperlink控件的扩展。使用CssClass 设置锚标记的属性:

hlTabLink.CssClass = liContainerId;

答案 2 :(得分:0)

不知道从

返回的内容
hlTabLink = e.Item.FindControl("hlTabLink") as Link;

很难确切地说出发生了什么,但我猜测没有任何案例陈述正在发生,因为你没有默认案例,所以没有增加任何类。尝试将此添加到您的交换机,看看会发生什么:

         default:
                    liContainerId = "tab-label TabbedPanelsTabSelected";
                    hlTabLink.Attributes.Add("class", liContainerId);
                    break;