Adicione atributos customizados à tabela renderizada pelo WebGrid
Estou usando um MVC3 WebGrid e quero adicionar atributos personalizados do formulário "data-xxx" ao<table>
elemento processado porWebGrid.GetHtml()
.
Eu tentei fazer isso da seguinte maneira:
grid.GetHtml(...
htmlAttributes: new { data_xxx = "value" }
);
No entanto, isso processa como:
<table ... data_xxx="value">
em vez do esperado:
<table ... data-xxx="value">
Ou seja ao contrário de outros ajudantes do MVC, ele não substitui o sublinhado no nome da propriedade por um hífen.
Depois de um pouco de espeleologia com o Reflector, parece que:
WebGrid.GetHtml()
chamadasSystem.Web.WebPages.Html.ObjectToDictionary
para converter o objeto de atributos anônimos em um dicionário. Ao contrário do métodoSystem.Web.Mvc.HtmlHelper.AnonymousObjectToHtmlAttributes
usado por outros ajudantes, isso não substitui "_" por "-".
Ao contrário da maioria dos outros ajudantes do MVC,WebGrid.GetHtml()
não tem uma sobrecarga que leva umIDictionary<string, object>
, então não posso contornar o bug especificando os atributos dessa maneira.
Isso parece um bug para mim e eu enviei para o Connect:
Alguma sugestão para uma solução alternativa? Ou é fixo em MVC4?