1

MVC3 WebGridを使用しており、「data-xxx」形式のカスタム属性を<table>によってレンダリングされる要素に追加したいと考えていますWebGrid.GetHtml()

私はこれを次のようにしようとしました:

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

ただし、これは次のようにレンダリングされます。

<table ... data_xxx="value">

期待される代わりに:

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

つまり、他のMVCヘルパーとは異なり、プロパティ名のアンダースコアがハイフンに置き換えられることはありません。

リフレクターで少し洞窟探検した後、それは次のように思われます:

  1. WebGrid.GetHtml()System.Web.WebPages.Html.ObjectToDictionary匿名属性オブジェクトを辞書に変換するための呼び出し。他のヘルパーが使用する方法とは異なりSystem.Web.Mvc.HtmlHelper.AnonymousObjectToHtmlAttributes、これは「_」を「-」に置き換えません。

  2. 他のほとんどのMVCヘルパーとは異なり、WebGrid.GetHtml()をとるオーバーロードがIDictionary<string, object>ないため、この方法で属性を指定することでバグを回避することはできません。

これは私にはバグのように見えます、そして私はそれをConnectに提出しました:

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

回避策の提案はありますか?それともMVC4で修正されていますか?

4

1 に答える 1

2

この問題を報告していただきありがとうございます:

これは昨日 CodePlex で問題 610 と 575 を解決することで修正されました。

https://aspnetwebstack.codeplex.com/workitem/610

https://aspnetwebstack.codeplex.com/workitem/575

ナイトリー ビットを試すことができます。

于 2013-04-20T00:40:31.370 に答える