Html5 data- * con asp.net mvc Textbox para atributos html


Respuestas:


417

Puede usar el subrayado ( _) y el ayudante es lo suficientemente inteligente como para hacer el resto:

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

Y para aquellos que quieran lograr lo mismo en versiones anteriores a ASP.NET MVC 3, podrían:

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

8
¿Este comportamiento se especifica en alguna parte :)?
Rookian

55
@ Ryan, no, porque no tiene sentido trabajar para él EditorFor. El asistente EditorFor se usa para representar una plantilla HTML personalizada que corresponde al tipo dado. Una plantilla puede contener muchos elementos, por lo que hablar de atributos en una plantilla realmente no tiene sentido. Por supuesto, siempre podría escribir una plantilla personalizada que funcione con el additionalViewDataparámetro que podría pasarse a una plantilla de editor y simplemente generarlos como atributos en el campo de entrada correspondiente.
Darin Dimitrov

2
Para ser claros, el marcado resultante tiene un guión bajo y no un guión. La oración "Podrías usar el guión bajo (_) y el ayudante es lo suficientemente inteligente como para hacer el resto", específicamente la parte sobre la supuesta inteligencia me hizo creer que se convertiría automáticamente, pero no lo hace. HTML5 soporta -.
Alan Macdonald

2
@AlanMacdonald the _se convierte -en versiones anteriores (¿medias?) De MVC. Puede ser que las versiones más recientes lo hayan eliminado, pero lo estoy usando con éxito en MVC 3 y 4.
brichins

44
@AlanMacdonald (y otros que leen), también _se convierte -en MVC 5. Lo estoy usando con éxito en un proyecto en el que estoy trabajando actualmente, que usa MVC 5.
Amy Barrett
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.