Sitecore 8 простой способ получить элемент по внутренней ссылке?

У меня есть несколько общих полей ссылок, которые используются в качестве внутренних ссылок, поэтому элемент Sitecore.

Мне нужны эти «целевые» элементы в моем коде, и у меня такое чувство, что я делаю это ужасно сложным способом:

LinkField lf = myItem.Fields["My Link"];
if (lf != null)
{
    if (lf.Value != null)
    {
        ID targetID;
        if (ID.TryParse(lf.Value, out targetID))
        {
            Item targetItem = Sitecore.Context.Database.GetItem(targetID);
            {
                if (targetItem != null)
                {
                    // go on with code
                }
            }
        }
    }
}

Кто-нибудь знает более простой способ получить этот целевой предмет?

С уважением


person Bgl86    schedule 06.06.2017    source источник


Ответы (1)


Вы можете использовать свойство TargetItem для LinkField без специального кода:

Item targetItem;

LinkField linkField = myItem.Fields["My Link"];
if (linkField != null && linkField.IsInternal)
{
    targetItem = linkField.TargetItem;
}
person Marek Musielak    schedule 06.06.2017
comment
Спасибо, Марек, это легко :) - person Bgl86; 07.06.2017
comment
@Bgl86 рад, что смог помочь :) - person Marek Musielak; 07.06.2017
comment
Привет Марек. Я только что протестировал его, теперь он работает. TargetItem имеет значение Null. Только свойство Value имеет идентификатор элемента. Я использую DropTree как поле - person Bgl86; 07.06.2017
comment
Хорошо понял. Мне нужно использовать ReferenceField, а не LinkField в DropTree - person Bgl86; 07.06.2017