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