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:

http://connect.microsoft.com/VisualStudio/feedback/details/767456/webgrid-gethtml-helper-does-not-allow-data-attributes-to-be-set

Alguma sugestão para uma solução alternativa? Ou é fixo em MVC4?

questionAnswers(1)

yourAnswerToTheQuestion