[ASPNETMVC] Atributos HTML con guiones medios… Método AnonymousObjectToHtmlAttributes (ejemplo databinding para KnockoutJS/AngularJs)

Armando un control personalizado necesitaba setear los valores de atributos HTML, lo de siempre class, rel, pero especialmente atributos data por ejemplo los que son necesarios los binding de los frameworks javascript MVVM como KnockoutJS, AngularJS
Estos atributos tienen esta forma: data-bind, ng-mode, ng-click

Si lo queremos insertar en un Textbox/TextboxFor en el parametro htmlAttibutes una propiedad con guion del medio en el nombre:

SNAGHTML165b12f9
NOTA: Aquí la @class esta para cuando en C# necesitamos utilizar una palabra reservada como nombre de propiedad de un objeto anónimo

Bueno es conocido que debemos colocar con guiones bajos es decir data_bind y convertirá en un atributo data-bind

Pero necesitaba realizarlo en un control personalizado… asi que en vez de “armar el código para realizar esto” investigue un poco como estaba armando el propio y simple textbox mirado el código fuente de NET Framework.

Di con este método estático HtmlHelper.AnonymousObjectToHtmlAttributes (en System.Web.Mvc.HtmlHelper) dentro de  que en la ayuda nos explica todo… es el responsable de armar estos atributos

SNAGHTML15b196e3

“…Reemplaza los caracteres de subrayado (_) por guiones (-) en los atributos HTML especificados….”

El código:

//from System.Web.Mvc.HtmlHelper
public static RouteValueDictionary AnonymousObjectToHtmlAttributes(object htmlAttributes)
{
RouteValueDictionary result = new RouteValueDictionary();

if (htmlAttributes != null)
{
foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(htmlAttributes))
{
result.Add(property.Name.Replace('_', '-'), property.GetValue(htmlAttributes));
}
}

return result;
}

Entonces el código quedo algo así para armar la cadena de atributos a insertar en mi control personalizado atributosCadenaHtml.ToString();

...
var atributosFormateados =
HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes);

var atributosCadenaHtml = new StringBuilder();
foreach (var atributo in atributosFormateados)
{
atributosCadenaHtml .AppendFormat("{0}="{1}"", atributo.Key, atributo.Value);
}
...

 

Enlaces que pueden ayudar

[VS2012] Descargar Visual Studio 2012 Update 2 como .iso (por fin!)

Hace un par de semanas salió el Update 2 para Visual Studio 2012 y para el TFS2012…  y por la oficina lo descargamos completo para no estar realizando esto cada vez que necesitábamos tanto las maquinas de desarrollo como las virtuales que armamos. Lo único malo era que la descarga completa lo hacia con para todos los idiomas disponible (esta descarga completa era de unos 1.8Gb), pero bueno era la alternativa de tenerlo “en modo offline”

Descargar .ISO

Pero recién me entero que se “alinearon los planetas” y ya esta la descarga oficial del ISO

Enlace directo al .iso (VS2012.2.iso) http://go.microsoft.com/fwlink/?LinkID=298533 (y por supuesto también de 1.8Gb)

NOTA: Seria bueno que el enlace al .iso estuviera en el enlace oficial de descarga del Update 2 😉
http://www.microsoft.com/en-us/download/details.aspx?id=38188 

 

Fuente:

http://blogs.msdn.com/b/visualstudio/archive/2013/05/03/announcing-availability-of-isos-for-visual-studio-updates.aspx