ハイフン付きのデータ属性にアンダースコアを使用していることは承知しており (オブジェクトでは、「data-bind」ではなく「data_bind」)、それらは自動的にハイフンに置き換えられます。しかし、属性が「名前」で終わる場合、このアンダースコア「ハック」を実行できないという問題に遭遇しました。だから私はこれらの両方を試しましたが、どちらもうまくいきません:
@Html.TextBoxFor(model => model.Street, new { data_encrypted_name = "street" })
@Html.TextBoxFor(model => model.Street, new { @data_encrypted_name = "street" })
上記の両方のケースで生成された HTML を表示すると、次のように生成されます。
<input data-encrypted- id="ViewModel_Street" name="ViewModel.Street" type="text" value="" />
最初は、これは複数のアンダースコア/ハイフンと関係があるのではないかと考えていましたが、何が起こるかを確認するためにさらに 2 つのテスト ケースを試したところ、どちらも問題なく動作しました。
@Html.TextBoxFor(model => model.Street, new { data_encrypted_namme = "street" })
@Html.TextBoxFor(model => model.Street, new { data_name_encrypted = "street" })
したがって、この問題は、属性の末尾に「名前」があることに間違いなく関連しています。
何か間違っているか、何かが足りないのでしょうか、それとも .NET が属性を変換する方法のバグですか?
(明確にするために、Braintree Payments を使用しており、特定の入力で「data-encrypted-name」属性を使用する必要があるため、別の属性名を選択することはできません。)