BeginFormAntiForgeryPost does not change data_ attributes to data- attributes when passed an anonymous htmlAttributes object


Html.BeginFormAntiForgeryPost can be called with an override specifying an object with html attributes to be merged in.

When specifying HTML 5 data attributes, the underscore is usually used in razor and then converted automatically to a hyphen (eg.
@using(Html.BeginFormAntiForgeryPost(Url.Action("Index"), FormMethod.Post, new { data_ajax = "false" }))
<form action="Index" method="post" data-ajax="false">
However, with BeginFormAntiForgeryPost, the underscore is not converted to a hyphen as happens with the built-in MVC HTML Helper methods.

This is because the built-in MVC Html Helpers convert to a RouteValueDictionary via the helper method HtmlHelper.AnonymousObjectToHtmlAttributes which performs this conversion, and Orchard just does the conversion directly.

The attached patch resolves this.

file attachments


sfmskywalker wrote Mar 28, 2014 at 12:28 AM

Fixed in changeset 6f22578f5b2e8d418cf05f3ea3bfee5ea2e9d65e