The pageLink html helper can be used to add links to LinkItems eg. from a LinkItemCollection. But what I have seen, the pageLink helper do not take the language of the LinkItem into account. Which means the link will always be to the preffered culture. In some cases the editors might be interested in adding links to pages in specific languages.
What I have done to solve this is to make my own html helper, which is pretty much the same as the built in pagelink htmhelper for linkItem but this one will take the language of the LinkItem into account.
public static MvcHtmlString PageLanguageLink(this HtmlHelper htmlHelper, LinkItem item, IPermanentLinkMapper permanentLinkMapper)
{
if (permanentLinkMapper == null)
{
permanentLinkMapper = ServiceLocator.Current.GetInstance<IPermanentLinkMapper>();
}
PermanentLinkMap permanentLinkMap = permanentLinkMapper.Find(new UrlBuilder(item.GetMappedHref()));
PermanentContentLinkMap permanentContentLinkMap = permanentLinkMap as PermanentContentLinkMap;
if (permanentContentLinkMap == null)
{
return MvcHtmlString.Create(item.ToMappedLink(false));
}
object htmlAttributesFromLinkItem = HtmlHelperExtensions.GetHtmlAttributesFromLinkItem(item);
RouteValueDictionary test = new RouteValueDictionary();
return htmlHelper.PageLink(item.Text, permanentContentLinkMap.ContentReference, new { language = !string.IsNullOrEmpty(item.Langauge) ? item.Langauge : ContentLanguage.PreferredCulture.Name }, htmlAttributesFromLinkItem, null, null, null);
}
This extension will return a link to the page in the language specified in the Language property in LinkItem.
The pageLink html helper can be used to add links to LinkItems eg. from a LinkItemCollection. But what I have seen, the pageLink helper do not take the language of the LinkItem into account. Which means the link will always be to the preffered culture. In some cases the editors might be interested in adding links to pages in specific languages.
What I have done to solve this is to make my own html helper, which is pretty much the same as the built in pagelink htmhelper for linkItem but this one will take the language of the LinkItem into account.
This extension will return a link to the page in the language specified in the Language property in LinkItem.