如何用<z> @ </z>替换电子邮件地址中的@而不是&lt;用来代替

时间:2014-11-24 22:16:01

标签: asp.net-mvc asp.net-mvc-3 razor

我正在使用带有MVC3和ASP.NET4.5的Razor

我需要在HTML电子邮件中显示jim@bloggs.com。

由于电子邮件客户端添加mailto到电子邮件地址的链接的问题,我需要更改它们以防止这种情况发生。一个建议是添加不存在的标签,例如&lt; z&gt;。我试过了:

@(username.Replace("@","<z>@</z>"))

但是这会输出:

jim&lt;z&gt;@&lt;/z&gt;bloggs.com

如何确保在HTML中获得以下内容:

jim<z>@</z>bloggs.com 

我怀疑有些调整:

@(username.Replace("@","<z>@</z>"))

就是答案。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您应该使用@Html.Raw()方法,因为默认情况下在Razor中打开字符串转义。

@Html.Raw(username.Replace("@","<z>@</z>"))

虽然这个问题会有安全方面的考虑因素,因为它是一个潜在的XSS漏洞,因此您最好先删除用户名的初始值,然后再应用您的代码插入。