Html5 data- * с asp.net mvc Textbox для атрибутов html

245

Как добавить data-*атрибуты HTML, используя TextboxFor?

Вот что у меня сейчас есть:

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

Как видите, здесь -возникает проблема data-url. Как обойти это?

Шон Маклин
источник
Возможное дублирование атрибутов переноса html с asp.net mvc
ED-209

Ответы:

418

Вы можете использовать underscore ( _), а помощник достаточно умен, чтобы сделать все остальное:

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

А для тех, кто хочет достичь того же в предварительных версиях ASP.NET MVC 3, они могут:

<%= Html.TextBoxFor(
    model => model.Country.CountryName, 
    new Dictionary<string, object> { 
        { "data-url", Url.Action("CountryContains", "Geo") } 
    }
) %>
Дарин димитров
источник
8
Это поведение указано где-нибудь :)?
Rookian
5
@ Райан, нет, не потому, что работать не имеет смысла EditorFor. Помощник EditorFor используется для визуализации пользовательского шаблона HTML, соответствующего данному типу. Шаблон может содержать много элементов, поэтому говорить об атрибутах в шаблоне не имеет смысла. Конечно, вы всегда можете написать собственный шаблон, который работает с additionalViewDataпараметром, который можно передать шаблону редактора, и просто вывести их в виде атрибутов в соответствующее поле ввода.
Дарин Димитров
2
Просто чтобы быть ясно, результирующая разметка имеет подчеркивание, а не дефис. Предложение «Вы можете использовать подчеркивание (_), а помощник достаточно умен, чтобы делать все остальное», в частности, немного о предполагаемом интеллекте заставило меня поверить, что оно автоматически преобразуется в - но это не так. HTML5 поддерживает -.
Алан Макдональд
2
@AlanMacdonald the _преобразуется -в более старые (средние?) Версии MVC. Может быть, самые последние версии выпали, но я успешно использую его на MVC 3 и 4.
brichins
4
@AlanMacdonald (и другие читающие) также _преобразуются -в MVC 5. Я успешно использую его в проекте, над которым я сейчас работаю, который использует MVC 5.
Эми Барретт,