Dados html5 * com asp.net mvc TextboxFor atributos html

244

Como adiciono data-*atributos html usando TextboxFor?

Isto é o que eu tenho atualmente:

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

Como você vê, o -problema está causando aqui data-url. Qual é o caminho para contornar isso?

Shawn Mclean
fonte
possível duplicado de atributos HTML Hyphenated com asp.net mvc
ED-209

Respostas:

417

Você pode usar underscore ( _) e o auxiliar é inteligente o suficiente para fazer o resto:

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

E para aqueles que desejam obter o mesmo nas versões anteriores ao ASP.NET MVC 3, eles poderiam:

<%= Html.TextBoxFor(
    model => model.Country.CountryName, 
    new Dictionary<string, object> { 
        { "data-url", Url.Action("CountryContains", "Geo") } 
    }
) %>
Darin Dimitrov
fonte
8
Esse comportamento é especificado em algum lugar :)?
Rookian
5
@ Ryan, não, não porque não faz sentido trabalhar EditorFor. O auxiliar EditorFor é usado para renderizar um modelo HTML personalizado que corresponde ao tipo especificado. Um modelo pode conter muitos elementos; portanto, falar sobre atributos em um modelo realmente não faz sentido. É claro que você sempre pode escrever um modelo personalizado que funcione com o additionalViewDataparâmetro que pode ser passado para um modelo de editor e simplesmente produzi-los como atributos no campo de entrada correspondente.
Darin Dimitrov 29/07
2
Só para esclarecer, a marcação resultante tem um sublinhado e não hífen. A frase "Você pode usar sublinhado (_) e o ajudante é inteligente o suficiente para fazer o resto", especificamente o pouco sobre a suposta inteligência que me fez acreditar que ela se converteria automaticamente - mas não é. O HTML5 suporta -.
Alan Macdonald
2
@AlanMacdonald _é convertido -em versões mais antigas (do meio?) Do MVC. Pode ser que a versão mais recente (s) ter deixado cair, mas eu estou usando-o com sucesso em MVC 3 e 4.
brichins
4
@AlanMacdonald (e outros que estão lendo), também _é convertido -no MVC 5. Eu estou usando-o com sucesso em um projeto que estou trabalhando atualmente, que utiliza MVC 5.
Amy Barrett