Dados html5 * com asp.net mvc TextboxFor atributos html


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") } 
    }
) %>

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.