1. ホーム
  2. c#

[解決済み] asp.net mvcのハイフン付きhtml属性

2022-09-03 19:04:46

質問

ハイフン属性の要素を作成する際に、より良い構文がありますか?

<%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %>


提案されている規格である HTML 5 の HTML 仕様を見てみると WIA ARIA の HTML 仕様を見ると、HTML 属性におけるハイフンは、ある種の単純な名前間隔としてより一般的になるよう計画されているようです。

例:HTML 5 では、カスタム属性の先頭に data- であり、WIA ARIAでは aria- のプレフィックスを使用します。

ASP.NET MVCでHTMLヘルパーを使用する場合、例えば <%= Html.TextBox("name", value, new { attribute = attributeValue }) %> のようなHTMLヘルパーを使用すると、匿名オブジェクトは辞書に変換されます。

残念ながら、C# では名前のハイフンをサポートしていないので、唯一の代替案は辞書を作成することです。そのための構文は非常に冗長ですが、誰かもっとすてきな代替手段を見たことがありますか、または拡張機能全体を書き直すことなく ASP.NET MVC の HTML 拡張機能の機能を変更する簡単な方法を見たことがありますか?

どのように解決するのですか?

データ属性名にアンダースコアを使用すると、魔法のようにハイフンに変換して処理されます。アンダースコアはhtmlの属性名では有効ではないので、アンダースコアではなくハイフンが必要であることがわかります。

<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %>