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:
Wszelkie sugestie dotyczące obejścia? Czy jest to naprawione w MVC4?