Dane HTML5 * z asp.net mvc Textbox Dla atrybutów HTML

244

Jak dodać data-*atrybuty HTML za pomocą TextboxFor?

Oto, co obecnie mam:

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

Jak widzisz, -przyczyną jest tutaj problem data-url. Jak sobie z tym poradzić?

Shawn Mclean
źródło
możliwy duplikat dzielonych atrybutów HTML z asp.net mvc
ED-209

Odpowiedzi:

417

Możesz użyć podkreślenia ( _), a pomocnik jest wystarczająco inteligentny, aby wykonać resztę:

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

A dla tych, którzy chcą osiągnąć to samo w wersjach wcześniejszych niż ASP.NET MVC 3, mogliby:

<%= Html.TextBoxFor(
    model => model.Country.CountryName, 
    new Dictionary<string, object> { 
        { "data-url", Url.Action("CountryContains", "Geo") } 
    }
) %>
Darin Dimitrov
źródło
8
Czy to zachowanie jest określone gdziekolwiek :)?
Rookian
5
@ Ryan, nie, nie ma, bo nie ma sensu pracować EditorFor. Pomocnik EditorFor służy do renderowania niestandardowego szablonu HTML, który odpowiada podanemu typowi. Szablon może zawierać wiele elementów, więc mówienie o atrybutach w szablonie tak naprawdę nie ma sensu. Oczywiście zawsze możesz napisać szablon niestandardowy, który działa z additionalViewDataparametrem, który można przekazać do szablonu edytora i po prostu wyprowadzić je jako atrybuty w odpowiednim polu wejściowym.
Darin Dimitrov
2
Dla jasności wynikowy znacznik ma podkreślnik, a nie łącznik. Zdanie „Możesz użyć znaku podkreślenia (_), a pomocnik jest wystarczająco inteligentny, aby wykonać resztę”, a konkretnie fragment o domniemanej inteligencji sprawił, że uwierzyłem, że zmieni się automatycznie - ale tak nie jest. Obsługa HTML5 -.
Alan Macdonald
2
@AlanMacdonald _jest konwertowany na -starsze (środkowe?) Wersje MVC. Możliwe, że najnowsze wersje go
upuściły
4
@AlanMacdonald (i inni czytający), _jest również konwertowany do -MVC 5. Z powodzeniem używam go w projekcie, nad którym obecnie pracuję, który wykorzystuje MVC 5.
Amy Barrett,