Para poder facilmente adicionar o gravatar de um utilizador a um site ASP MVC 2, criei o seguinte HTML helper:
namespace MySite.Helpers { public static class HTMLHelpers { public static string GravatarFor(this HtmlHelper html, string id, string email, object htmlAttributes) { int size = 80; string imageUrl = "http://www.gravatar.com/avatar.php?"; if (!string.IsNullOrEmpty(email)) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); UTF8Encoding encoder = new UTF8Encoding(); MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider(); byte[] hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(email)); StringBuilder sb = new StringBuilder(hashedBytes.Length * 2); for (int i = 0; i < hashedBytes.Length; i++) { sb.Append(hashedBytes[i].ToString("X2")); } imageUrl += "gravatar_id=" + sb.ToString().ToLower(); imageUrl += "&rating=G"; imageUrl += "&size=" + size.ToString(); } var builder = new TagBuilder("img"); builder.GenerateId(id); builder.MergeAttribute("src", imageUrl); builder.MergeAttribute("alt", "Gravatar"); builder.MergeAttribute("default", "~/Content/Images/default-gravatar.png"); builder.MergeAttributes(new RouteValueDictionary(htmlAttributes)); return builder.ToString(TagRenderMode.SelfClosing); } } }
Para usar, basta importar o namespace numa view:
<%@ Import Namespace=”MySite.Helpers” %>
E depois usar o helper como extensão do objecto HTML:
<%= Html.GravatarFor(“gravatarId”, Model.User.Email, null) %>
onde em Model.User.Email estará o email do utilizador.

3 comentários
Comentários feed para este artigo
Novembro 10, 2010 às 10:40 pm
adding a user’s gravatar to an ASP MVC 2 solution « .NET Framework – Stefan Z Camilleri
[...] adding a user’s gravatar to an ASP MVC 2 solution Leave a Comment Posted by Stefan Z Camilleri on November 10, 2010 Whilst on the subject of method extensions, a good friend of mine has blogged about a neat way of adding a user’s gravatar to an ASP MVC 2 solution. More under the hood… [...]
Novembro 15, 2010 às 10:41 am
Steve Giordano Imbroll
very straight to the point and simple to understand.
Novembro 10, 2010 às 10:45 pm
Stefan Z Camilleri
Very neat
:):)