C# Sitecore链接未添加属性
我正在使用Sitecore和VS2010(版本4)。我正在根据用户转到的选项卡索引添加代码隐藏中的属性: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
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类添加某些内容将不会发生这种情况。