Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more

Rendering Episerver.Url with mailto, results in garbage characters

Vote:
 

Pretty straightforward, I ripped off the Alloy MVC demo and either one of these

@Html.UrlLink(new EPiServer.Url("mailto:adress@host.se"))
<a href="@Url.ContentUrl(new EPiServer.Url("mailto:adress@host.se"))">Send email</a>

Renders an anchor tag with href="mailto::25//adress@host.se:25". If I try anything other than mailto, for instance

@Html.UrlLink(new EPiServer.Url("mailltoo:adress@host.se"))

Then it renders correctly. Sadly my browser does not understand what "mailltoo" means. Email adresses in EPiServer.SpecializedProperties.LinkItems work fine, but all I have is this Url. How do I wrangle a clean href string out of it, regardless of what the target might be?

#82547
Mar 14, 2014 11:23
Vote:
 

Hi Kjell

Same issue happened to me, do you have any solution for this issue?

#88706
Jul 26, 2014 4:51
Vote:
 

If your email address is a string property in your model, you can just use:

@Html.PropertyFor(m => m.CurrentPage.Email)



#88725
Jul 28, 2014 13:30
Vote:
 

Hey,

I have the following definition:

        [Display(
            GroupName = SystemTabNames.Content,
            Order = 30)]
        [BackingType(typeof(PropertyUrl))]
        public virtual Url Info { get; set; }

And the following rendering:

            

@Model.CurrentBlock.Info = mailto:info@mogul.com, ie.

The version of EPi is 7.7.1.0.

#88726
Jul 28, 2014 13:47
Vote:
 

Hi Mari

If I set this property as string and user wants to set this as internal page link later, it's not that user fridenly to the end user.

#88727
Jul 28, 2014 15:00
Vote:
 

Hi Marija

If I render the href without using @Url.ContentUrl helper method, it's all working fine even without having BackingType attribute. Howerver if the property value is changed to internal link, the href value is not displaying as a friendly url instead it displays the episerver internal link e.g. /link/xxxxxxx.

I am not too sure if the episerver internal link will affect the SEO, that's why I prefer to use Url.ContentUrl helper to generate the EPiServer.Url link no matter what type of the url it is. 

#88729
Jul 28, 2014 15:15
Vote:
 

Hello Guys,

I am experiencing the same issue, did you manage to circumvent this issue without creating a new block?

Cheers,

#113869
Nov 28, 2014 20:13
Vote:
 

Late reply, but still relevant. I was faced with the same problem. My solution was to get the url differently if it was a mailto.

var href = Model.MyUrl.Scheme == "mailto" ? Model.MyUrl.ToString() : Url.ContentUrl(Model.MyUrl);

You can create an extension method that returns the processed Url

public static string Url(this HtmlHelper helper, Url url)
{
    if (url == null)
        return null;

    return url.Scheme == "mailto" ? url.ToString() : UrlExtensions.ContentUrl(null, url);
}

Or you can create an extension method that returns an anchor with the correct url, it's up to you :)

All the best,
Micke

#114699
Dec 18, 2014 14:35
Vote:
 

I know this is an old post...but, I'm having the same issue. Has anyone reported this as a bug? Is EPiServer planing on fixing it?

#134528
Sep 15, 2015 16:54
Vote:
 

For you who reads this.
If you change to use Url.ContentUrl instead it works with both email address and internal links

#173827
Jan 10, 2017 15:54
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.