在Code-Behind中获取droplink的价值

Bar*_*oro 6 c# sitecore

我试图在后端C#代码的droplink中获取项目的显示名称.我正在使用Sitecore 6.6,而不是使用MVC,并且在CMS中为被调用的客户端设置了droplink控件Address.droplink源转到/sitecore/Templates/User Defined/WAC/Address,并且各个项目具有符合SEO的名称和可读的显示名称.

例如:

  • 产品编号:{9E60F5F8-FBF2-4CBD-BB13-6A93397AAC87}
  • 名称:100-main-street
  • 显示名称:100 Main Street,Sample Town,10011

我的代码:

protected void Page_Load(object sender, EventArgs e)
{
    String sl = "";
    Sitecore.Data.Items.Item currentItem = Sitecore.Context.Item;
    // BEGIN main class list
    Sitecore.Collections.ChildList classList = currentItem.Children;
    foreach (Sitecore.Data.Items.Item mainPage in classList)
    {
        if (mainPage.TemplateID.ToString() == "{27A9692F-AE94-4507-8714-5BBBE1DB88FC}")
        {
            sl += "<span class=\"address\">" + mainPage.Fields["Address"] +"</span>";
        }                            
        else
        {
        }
    }
    // END main class list
    classSessionList.Text = sl;
}
Run Code Online (Sandbox Code Playgroud)

此代码将为我提供项目的ID.如果我使用mainPage.Fields["Address"].DisplayName,我会得到"地址".

如何从droplink获取项目的显示名称?

小智 7

使用LookupField获取以下参考项是示例代码:

LookupField address= (LookupField)mainPage.Fields["Address"];
Item addressItem = address.TargetItem;
string displayName = addressItem.Fields["DisplayName"].Value;
Run Code Online (Sandbox Code Playgroud)

如果你想在一行中使用它,那么使用下面的代码:

((LookupField)mainPage.Fields["Address"]).TargetItem.DisplayName
Run Code Online (Sandbox Code Playgroud)


Tho*_*sen 3

将字段类型转换为 ReferenceField。然后访问 TargetItem 属性:

sl += "<span class=\"address\">" + ((ReferenceField)mainPage.Fields["Address"]).TargetItem.DisplayName +"</span>";
Run Code Online (Sandbox Code Playgroud)