Html5 data- * avec asp.net mvc TextboxPour les attributs html

245

Comment ajouter des data-*attributs html à l'aide de TextboxFor?

Voici ce que j'ai actuellement:

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

Comme vous le voyez, la -cause un problème ici data-url. Quel est le moyen de contourner cela?

Shawn Mclean
la source

Réponses:

418

Vous pouvez utiliser underscore ( _) et l'assistant est suffisamment intelligent pour faire le reste:

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

Et pour ceux qui souhaitent obtenir le même résultat dans les versions antérieures à ASP.NET MVC 3, ils pourraient:

<%= Html.TextBoxFor(
    model => model.Country.CountryName, 
    new Dictionary<string, object> { 
        { "data-url", Url.Action("CountryContains", "Geo") } 
    }
) %>
Darin Dimitrov
la source
8
Ce comportement est-il spécifié n'importe où :)?
Rookian
5
@Ryan, non, ce n'est pas le cas car cela n'a pas de sens de travailler pour EditorFor. L'assistant EditorFor est utilisé pour rendre un modèle HTML personnalisé qui correspond au type donné. Un modèle peut contenir de nombreux éléments, donc parler d'attributs dans un modèle n'a pas vraiment de sens. Bien sûr, vous pouvez toujours écrire un modèle personnalisé qui fonctionne avec le additionalViewDataparamètre qui peut être transmis à un modèle d'éditeur et les afficher simplement en tant qu'attributs dans le champ de saisie correspondant.
Darin Dimitrov
2
Juste pour être clair, le balisage résultant a un trait de soulignement et non un trait d'union. La phrase "Vous pouvez utiliser le trait de soulignement (_) et l'assistant est suffisamment intelligent pour faire le reste", en particulier le morceau sur l'intelligence supposée m'a fait croire qu'il se convertirait automatiquement en - mais ce n'est pas le cas. HTML5 prend en charge -.
Alan Macdonald
2
@AlanMacdonald the _est converti -en versions plus anciennes (moyennes?) De MVC. Il se peut que la ou les versions les plus récentes l'aient supprimée, mais je l'utilise avec succès sur MVC 3 et 4.
brichins
4
@AlanMacdonald (et d'autres lecteurs), le _est également converti -en MVC 5. Je l'utilise avec succès dans un projet sur lequel je travaille actuellement, qui utilise MVC 5.
Amy Barrett