Html5 data- * with asp.net mvc TextboxFor html属性


244

data-*TextboxForを使用してHTML属性を追加するにはどうすればよいですか?

これは私が現在持っているものです:

@Html.TextBoxFor(model => model.Country.CountryName, new { data-url= Url.Action("CountryContains", "Geo") })

ご覧のとおり、-ここで問題が発生していますdata-url。これはどうですか?


回答:


417

下線(_)を使用することができ、ヘルパーは残りの部分を実行するのに十分インテリジェントです:

@Html.TextBoxFor(
    model => model.Country.CountryName, 
    new { data_url = Url.Action("CountryContains", "Geo") }
)

ASP.NET MVC 3より前のバージョンで同じことを実現したい場合は、次のことができます。

<%= Html.TextBoxFor(
    model => model.Country.CountryName, 
    new Dictionary<string, object> { 
        { "data-url", Url.Action("CountryContains", "Geo") } 
    }
) %>

8
この動作はどこでも指定されていますか:)?
Rookian

5
@ライアン、それは働きませんEditorFor。EditorForヘルパーは、指定されたタイプに対応するカスタムHTMLテンプレートをレンダリングするために使用されます。テンプレートには多くの要素が含まれる可能性があるため、テンプレートの属性について説明しても意味がありません。もちろんadditionalViewData、エディターテンプレートに渡すことができるパラメーターを操作するカスタムテンプレートを常に記述し、対応する入力フィールドの属性として出力することもできます。
Darin Dimitrov 2013

2
明確にするために、結果のマークアップにはハイフンではなくアンダースコアが付いています。「アンダースコア(_)を使用でき、ヘルパーは残りの部分を実行するのに十分にインテリジェントです」という文、特に想定されるインテリジェンスについてのビットは、自動変換されると信じさせましたが、実際はそうではありません。HTML5は-をサポートしています。
アランマクドナルド2015

2
@AlanMacdonaldこれ_-、MVCの古い(中間?)バージョンに変換されます。これは、最新のバージョン(s)はそれを落としていることかもしれないが、私はMVC 3と4に成功し、それを使用しています
brichins

4
@AlanMacdonald(および他の人が読む)、MVC 5でも_変換さ-れます。私はMVC 5を使用して、私が現在働いているプロジェクトに成功し、それを使用しています
エイミー・バレット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.