Ta funkcjonalność jest dość zaskakująco, dostarczonych przez klasę RouteValueDictionary
:
IDictionary<string, object> htmlAttributes = new RouteValueDictionary(attrs);
Następnie można użyć tego słownika w połączeniu z TagBuilder
, która będzie prawdopodobnie używając zresztą:
var tagBuilder = new TagBuilder("input");
tagBuilder.MergeAttributes(htmlAttributes);
tagBuilder.ToString(TagRenderMode.Normal);
Widać to zrobić w kodzie źródłowym ASP.NET MVC samego; jednym z prostszych przykładów jest TextAreaExtensions.cs.
EDIT:
W celu prawidłowego przeliczenia "data_attr" do "data-attr", należy użyć metody statycznej AnonymousObjectToHtmlAttributes
.
IDictionary<string, object> htmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(attrs);
Dziękuję Ci pytanie! Uratowałem mój dzień! – Sergey