C# Sitecore链接未添加属性

C# Sitecore链接未添加属性,c#,asp.net,sitecore,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.FullPat

我正在使用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>

  • 概述
  • 为什么是我


我做错了什么?

我怀疑你没有做错什么。。。只是Sitecore.Web.UI.WebControls.Link对象没有费心渲染额外的属性。使用Reflector查看代码以确认


将Sitecore链接对象替换为超链接。看来您在这里没有做任何保证对标准ASP.NET对象使用Sitecore控件的事情。

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


将Sitecore链接对象替换为超链接。在这里,您似乎没有做任何保证对标准ASP.NET对象使用Sitecore控件的事情。

而不知道从中得到了什么

hlTabLink = e.Item.FindControl("hlTabLink") as Link;
很难说到底发生了什么,但我猜case语句都没有命中,因为没有默认的case,所以没有添加任何类。尝试将其添加到交换机中,看看会发生什么:

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

不知道从哪里回来

hlTabLink = e.Item.FindControl("hlTabLink") as Link;
很难说到底发生了什么,但我猜case语句都没有命中,因为没有默认的case,所以没有添加任何类。尝试将其添加到交换机中,看看会发生什么:

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

在Sitecore命名空间中,Link是ASP:Hyperlink控件的扩展。使用CssClass 要设置定位标记的属性,请执行以下操作:

hlTabLink.CssClass = liContainerId;

在Sitecore命名空间中,Link是ASP:Hyperlink控件的扩展。使用CssClass 要设置定位标记的属性,请执行以下操作:

hlTabLink.CssClass = liContainerId;

看起来hlTabLink并没有添加到页面的任何位置。另外,您不应该在某个时候实例化它吗?Link hlTabLink=新链接()?什么是链接?我第一次看到它。您使用的是哪个asp.net版本?我想切换条件在任何情况下都不正确。为什么不添加一个默认大小写,然后查看属性是否已填充?他显示的是输出,而不是.ascx标记。FindControl正在返回对象。@全部:请查看我编辑的问题。看起来hlTabLink并没有添加到页面的任何位置。另外,您不应该在某个时候实例化它吗?Link hlTabLink=新链接()?什么是链接?我第一次看到它。您使用的是哪个asp.net版本?我想切换条件在任何情况下都不正确。为什么不添加一个默认大小写,然后查看属性是否已填充?他显示的是输出,而不是.ascx标记。FindControl正在返回对象。@全部:请看我编辑的问题。Switch语句正在命中。我查过了。开关语句正在运行。我查过了。是的,在听说案件陈述事实上被击中后,我想说这是下一步要采取的行动。看起来是这样。我要试一试!是的,在听说案件陈述事实上受到打击之后,我想说这是下一步要采取的行动。看起来是这样。我要试一试!美好的这可能也会在回发之间持续存在,在回发之间手动向.Attributes类添加内容将不会.Nice。这可能也会在回发之间持续存在,手动向.Attributes类添加某些内容将不会发生这种情况。