2013-04-15 11 views
6

ハイフン付きのデータ属性にアンダースコアを使用していることをよく知っています(オブジェクト内の "データバインド"ではなく "data_bind")、自動的にハイフンに置き換えられます。しかし、属性が "名前"で終わっている場合、私はこの問題を解決できないという問題にぶち当たっています。だから私はこれらの両方を試してみましたが、どちらも仕事は:私は上記の両方のケースのために、生成されたHTMLを表示すると"name"で終わるデータ属性は使用できませんか?

@Html.TextBoxFor(model => model.Street, new { data_encrypted_name = "street" }) 

@Html.TextBoxFor(model => model.Street, new { @data_encrypted_name = "street" }) 

、それが生成する:まず

<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の属性変換方法のバグですか?

(明確にするために、我々はブレインツリー支払いを使用して、彼らは特定の入力の「データ暗号化-name」属性を使用する必要があり、私たちはちょうど別の属性名を選択することはできません。)へ

+0

'name'は有効なHTML属性であるため、問題が発生している可能性があります。 – tier1

+1

ええと、まあ、そのアイデアのラインに沿って、私はdata_encrypted_idとdata_encrypted_classを試しましたが、どちらも期待どおりに働いていました。だから、それはまだ最後に "名前"と直接関係しているようです。考えてくれてありがとう! –

+1

FYIと同じように、この動作、VS2012、MVC4、cshtmlファイルをHtml.TextboxForヘルパーで確認することはできません。 @ Html.TextBoxFor(x => x.TrapNumber、new {data_encrypted_name = "Test"})は私のために適切にレンダリングします。 "TrapNumber" name = "TrapNumber" type = "text" value = "011477" data-val-required = "トラップ番号が必要です" >。またTextAreaで問題なくテストされています。私はこれがあなたの行動に対処していないことを知っていますが、それは私にとってフレームワークの「バグ」ではないとの洞察を与えたかったのです... – Tommy

答えて

2

感謝私が説明した行動をテストし、それが誰のためにもバグではなかったことを発見したのです。

トミーがこれを書いた後、私が使っていたヘルパーを見ました。実際には、「NameLessTextBoxFor」という拡張メソッド(実際にはHow to extend html.textboxfor to remove the name attribute?)を使用していましたが、これを表示する前に入力からname=""属性を削除しました。私はこれを投稿する前に確認しておくべきでしたが、それが渡されたHTML属性に影響する可能性があることを認識しませんでした。

期待通りに、属性は、name=""という文字列を切り捨てていました。非常に単純な検索を行い、そのテキストを置き換えて削除していました。それがここの問題でした。

この問題にお時間をいただきありがとうございました。ご迷惑をおかけして申し訳ありません。

関連する問題