Sitecore访问ASP控件的字段值

时间:2012-05-22 12:25:49

标签: field sitecore

任何人都可以告诉我是否可以使用ASP Control而不是Field Renderer来显示该字段。请参见下图。 注意:我需要在Repeater的Item Databound事件中执行此操作。

我有一个模板,其中字段为外部链接.Eg:联系我们。在页面中显示该链接的一种方法是使用字段渲染器,如下所示。

ContactUS.aspx:

<asp:Repeater ID="rptContactUS" runat="server" OnItemDataBound="Menu_OnItemDataBound">
        <ItemTemplate>
           <item><sc:FieldRenderer ID="frContactUS" runat="server"/></item>                                           
       </ItemTemplate>    
 </asp:Repeater>

ContactUS.aspx.cs:

protected void Menu_OnItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Field item = (Field)e.Item.DataItem;
        if (item != null)
        {
            FieldRenderer frContactUS= (FieldRenderer)e.Item.FindControl("frContactUS");
            if (frContactUS!= null)
            {
                frContactUS.FieldName = item.Name;
            }
        }    
    }

上面的代码工作正常。我的问题是我是否可以使用Asp控件而不是FieldRenderer并将字段项中的链接值分配给转发器的项目数据绑定事件中链接的asp href属性。如果是,请告诉我怎么样?

谢谢, 苏哈斯

1 个答案:

答案 0 :(得分:0)

是的,你可以。从我在您的示例中看到的,您将Field绑定到菜单。 您还可以将项目列表绑定到菜单。然后,您可以在转发器中检索项目的字段,如下所示:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Item dataItem = (Item)e.Item.DataItem;
                    System.Web.UI.WebControls.HyperLink hl = (System.Web.UI.WebControls.HyperLink)e.Item.FindControl("hl");

                    if (hl != null)
                    {
                    Sitecore.Data.Fields.LinkField url = dataItem.Fields["linkfield"];

                    if (url != null)
                    {
                        hlMerk.NavigateUrl = url.Url;
                        hlMerk.Target = url.Target;
                        // more properties are available check sitecore documentation
                    }                       
                }
           }

}

从这里你将有url字段(显然你应该给出正确的字段名称而不是url。 LinkField有一些属性,如一般Sitecore文档中所述,可以在http://sdn.sitecore.net找到。