MVC3 WebGridを使用しており、「data-xxx」形式のカスタム属性を<table>
によってレンダリングされる要素に追加したいと考えていますWebGrid.GetHtml()
。
私はこれを次のようにしようとしました:
grid.GetHtml(...
htmlAttributes: new { data_xxx = "value" }
);
ただし、これは次のようにレンダリングされます。
<table ... data_xxx="value">
期待される代わりに:
<table ... data-xxx="value">
つまり、他のMVCヘルパーとは異なり、プロパティ名のアンダースコアがハイフンに置き換えられることはありません。
リフレクターで少し洞窟探検した後、それは次のように思われます:
WebGrid.GetHtml()
System.Web.WebPages.Html.ObjectToDictionary
匿名属性オブジェクトを辞書に変換するための呼び出し。他のヘルパーが使用する方法とは異なりSystem.Web.Mvc.HtmlHelper.AnonymousObjectToHtmlAttributes
、これは「_」を「-」に置き換えません。他のほとんどのMVCヘルパーとは異なり、
WebGrid.GetHtml()
をとるオーバーロードがIDictionary<string, object>
ないため、この方法で属性を指定することでバグを回避することはできません。
これは私にはバグのように見えます、そして私はそれをConnectに提出しました:
回避策の提案はありますか?それともMVC4で修正されていますか?