Dati html5- * con asp.net mvc Textbox Per attributi html


245

Come faccio ad aggiungere data-*attributi html usando TextboxFor?

Questo è quello che ho attualmente:

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

Come vedi, -sta causando un problema qui data-url. Qual è il modo per aggirare questo?


Risposte:


418

È possibile utilizzare underscore ( _) e l'helper è abbastanza intelligente da fare il resto:

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

E per coloro che vogliono ottenere lo stesso risultato nelle versioni ASP.NET MVC 3 precedenti, potrebbero:

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

8
Questo comportamento è specificato ovunque :)?
Rookian,

5
@Ryan, no, perché non ha senso lavorare per EditorFor. L'helper EditorFor viene utilizzato per eseguire il rendering di un modello HTML personalizzato che corrisponde al tipo specificato. Un modello può contenere molti elementi, quindi parlare di attributi in un modello non ha davvero senso. Ovviamente puoi sempre scrivere un modello personalizzato che additionalViewDatafunzioni con il parametro che può essere passato a un modello di editor e semplicemente inviarlo come attributi nel campo di input corrispondente.
Darin Dimitrov,

2
Per essere chiari, il markup risultante ha un carattere di sottolineatura e non un trattino. La frase "Potresti usare il trattino basso (_) e l'helper è abbastanza intelligente da fare il resto", in particolare la parte relativa alla supposta intelligenza mi ha fatto credere che si sarebbe convertito automaticamente in - ma non è così. HTML5 supporta -.
Alan Macdonald,

2
@AlanMacdonald the _viene convertito -nelle versioni precedenti (intermedie?) Di MVC. È possibile che le versioni più recenti lo abbiano abbandonato, ma lo sto usando con successo su MVC 3 e 4.
brichins

4
@AlanMacdonald (e altri che leggono), _viene convertito anche -in MVC 5. Lo sto usando con successo in un progetto a cui sto attualmente lavorando, che utilizza MVC 5.
Amy Barrett,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.