Dodaj niestandardowe atrybuty do tabeli renderowanej przez WebGrid

Używam WebGrid MVC3 i chcę dodać niestandardowe atrybuty formularza „data-xxx” do<table> element renderowany przezWebGrid.GetHtml().

Próbowałem to zrobić w następujący sposób:

grid.GetHtml(...
    htmlAttributes: new { data_xxx = "value" }
);

Jednak to sprawia, że:

<table ... data_xxx="value">

zamiast oczekiwanego:

<table ... data-xxx="value">

To znaczy. w przeciwieństwie do innych pomocników MVC, nie zastępuje znaku podkreślenia w nazwie właściwości łącznikiem.

Po odrobinie spelunkingu w Reflector wydaje się, że:

WebGrid.GetHtml() połączeniaSystem.Web.WebPages.Html.ObjectToDictionary przekonwertować anonimowy obiekt atrybutów na słownik. W przeciwieństwie do metodySystem.Web.Mvc.HtmlHelper.AnonymousObjectToHtmlAttributes używane przez innych pomocników, nie zastępuje „_” przez „-”.

W przeciwieństwie do większości innych pomocników MVC,WebGrid.GetHtml() nie ma przeciążenia, które zabieraIDictionary<string, object>, więc nie mogę obejść błędu, określając atrybuty w ten sposób.

Wygląda to na błąd i przesłałem go do Connect:

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

Wszelkie sugestie dotyczące obejścia? Czy jest to naprawione w MVC4?

questionAnswers(1)

yourAnswerToTheQuestion