1. Access field values

Access general link fields

Version:

You can use the Sitecore.Data.Fields.LinkField class to access data template fields of type General Link. Depending on the type of link in the field, you can use the following properties of the Sitecore.Data.Fields.LinkField class:

PropertyValue
AnchorThe name attribute of the HTML element, without the leading hash character (“#”).
ClassThe class attribute of the HTML element.
IsInternalTrue for an internal link, False for media and other types of links.
IsMediaLinkTrue for media links.
LinkTypeA token identifying the type of link (internal, media, external, mailto, anchor, or javascript).
QueryStringQuery string parameters to add to the URL.
TargetThe target attribute of the HTML element.
TargetIDThe ID of item specified d by internal or media link.
TargetItemThe Sitecore.Data.Items.Item specified by an internal or media link.
TextThe text content of the HTML element.
TitleThe title attribute of the HTML element.
UrlThe URL of the link, except for media items, for which the Url property contains the path to the media item relative to /Sitecore/Media Library.

To determine the URL in the General Link field named GeneralLinkField in the /Sitecore/Content/Home item in the Master database:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");
Sitecore.Data.Fields.LinkField linkField = home.Fields["generallinkfield"];

string url = String.Empty;

switch(linkField.LinkType)
{
    case "internal":
    case "external":
    case "mailto":
    case "anchor":
    case "javascript":
        url = linkField.Url;
        break;
    case "media":
        Sitecore.Data.Items.MediaItem media = new Sitecore.Data.Items.MediaIte(linkField.TargetItem);
        url = Sitecore.StringUtil.EnsurePrefix('/',
        Sitecore.Resources.Media.MediaManager.GetMediaUrl(media));
        break;
    case "":
        break;
    default:
        string message = String.Format("{0} : Unknown link type {1} in {2}", this.GetType(), linkField.LinkType, home.Paths.FullPath); Sitecore.Diagnostics.Log.Error(message,this);
    break;
}

You can use the Sitecore.Data.Fields.LinkField.Clear method to remove the data from a field of type General Link. For example, to remove any link from the General Link field named GeneralLinkField in the /Sitecore/Content/Home item in the Master database:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields["generallinkfield"];

home.Editing.BeginEdit();
linkField.Clear();
home.Editing.EndEdit();

To update the General Link field named GeneralLinkField in the /Sitecore/Content/Home item in the Master database to the item:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields["generallinkfield"];

Sitecore.Data.Items.Item sample = master.GetItem("/sitecore/content/home/sample");

home.Editing.BeginEdit();

linkField.Clear();

linkField.LinkType = "internal";

Sitecore.Links.UrlOptions urlOptions = Sitecore.Links.LinkManager.GetDefaultUrlOptions();

urlOptions.AlwaysIncludeServerUrl = false;

linkField.Url = Sitecore.Links.LinkManager.GetItemUrl(sample,urlOptions);

linkField.TargetID = sample.ID;

home.Editing.EndEdit();

To update the General Link field named GeneralLinkField in the /Sitecore/Content/Home item in the Master database to the /Sitecore/Media Library/Files/Sample media item:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields["generallinkfield"];

Sitecore.Data.Items.Item sample = master.GetItem("/sitecore/media library/files/sample");

home.Editing.BeginEdit();

linkField.Clear();

linkField.LinkType = "media";

linkField.Url = sample.Paths.MediaPath;

linkField.TargetID = sample.ID;

home.Editing.EndEdit();

To update the General Link field named GeneralLinkField in the /Sitecore/Content/Home item in the Master database to the external URL http://sitecore.net:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields["generallinkfield"];

home.Editing.BeginEdit();

linkField.Clear();

linkField.LinkType = "external";

linkField.Url = "http://sitecore.net";

home.Editing.EndEdit();

To update the General Link field named GeneralLinkField in the /Sitecore/Content/Home item in the Master database to the anchor namedAnchor:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields["generallinkfield"];

home.Editing.BeginEdit();

linkField.Clear();

linkField.LinkType = "anchor";

linkField.Url = "namedAnchor";

home.Editing.EndEdit();

To update the General Link field named GeneralLinkField in the /Sitecore/Content/Home item in the Master database to the email address [email protected]:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields["generallinkfield"];

home.Editing.BeginEdit();

linkField.Clear();

linkField.LinkType = "mailto";

linkField.Url = "mailto:[email protected]";

home.Editing.EndEdit();

To update the General Link field named GeneralLinkField in the /Sitecore/Content/Home item in the Master database to a JavaScript function:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");

Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/home");

Sitecore.Data.Fields.LinkField linkField = home.Fields["generallinkfield"];

home.Editing.BeginEdit();

linkField.Clear();

linkField.Text = "";

linkField.LinkType = "javascript";

linkField.Url = @"javascript:alert('javascript')";

home.Editing.EndEdit();
If you have suggestions for improving this article, let us know!