How do I add data-*
html attributes using TextboxFor?
This is what I currently have:
@Html.TextBoxFor(model => model.Country.CountryName, new { data-url= Url.Action("CountryContains", "Geo") })
As you see, the -
is causing a problem here data-url
. Whats the way around this?
You could use underscore (_
) and the helper is intelligent enough to do the rest:
@Html.TextBoxFor(
model => model.Country.CountryName,
new { data_url = Url.Action("CountryContains", "Geo") }
)
And for those who want to achieve the same in pre ASP.NET MVC 3 versions they could:
<%= Html.TextBoxFor(
model => model.Country.CountryName,
new Dictionary<string, object> {
{ "data-url", Url.Action("CountryContains", "Geo") }
}
) %>
Success story sharing
EditorFor
. The EditorFor helper is used to render a custom HTML template that corresponds to the given type. A template could contain many elements, so talking about attributes in a template doesn't really make sense. Of course you could always write a custom template that works with theadditionalViewData
parameter that could be passed to an editor template and simply output them as attributes on the corresponding input field._
is converted to-
in older (middle?) versions of MVC. It may be that the most recent version(s) have dropped it, but I'm using it successfully on MVC 3 and 4._
is converted to-
in MVC 5, too. I'm using it successfully in a project I'm currently working on, which uses MVC 5.