Typically it's best practice for all links on a webpage to include anchor text to give users and search engines context about what a link is for. However, for some fields, you may not want to actually display the anchor text. One example is if you have a link to Twitter and the link appears as a Twitter icon without any visible text. This case can be problematic for Sitecore because if one checks to see if the field has a value, Sitecore will return no value if the "Description" subfield of a General Link field has no value; even if the URL does have a value. Here's some boilerplate code with a few tips and tricks to get you on your way.
The Model
// Constructor
public ModelName()
{
TwitterLink = new HtmlString(FieldRenderer.Render(_item, "Twitter"));
LinkField li = _item.Fields["Twitter"];
if (li != null)
{
TwitterLinkRaw = li.GetFriendlyUrl();
// Use authored anchortext value or pull the default anchortext value for this field from the dictionary to allow for support of multiple languages
TwitterLinkDescRaw = !String.IsNullOrWhiteSpace(li.Text) ? li.Text : @Translate.Text("Twitter");
}
}
The View
@if (ViewHelper.IsEditMode())
{
@* Render the field directly in edit mode so that the user can visually modify the links *@
}
else
{
@* Preview or Normal modes *@
@* Ensure the link field has a URL which will be used to determine whether or not the link should be displayed *@
@* Use the authored link anchortext or a default value if it is not set *@
if (!String.IsNullOrWhiteSpace(Model.TwitterLinkRaw))
{
}
}
All the very best, Marcel