Перезапись класса на `Html.EditorFor`

по умолчанию с помощью

<%: Html.EditorFor(m => m.ConfirmationHeadline) %>

вывод:

 <input type="text" value="" 
        name="ConfirmationHeadline" id="ConfirmationHeadline" 
        class="text-box single-line">

Как вы можете видеть, вход добавляет уже атрибут class. Ну, это не должно быть проблемой, просто используйте

<%: Html.EditorFor(m => m.ConfirmationHeadline, new { @class="span-11 last"}) %>

и должен работать... err... nope!

это выведет тот же самый код!

но отлично работает с Html.TextAreaFor()

Как я могу удалить класс text-box single-line из когда-либо, чтобы мои собственные классы могли быть добавлены? любой шаблон T4, который я должен отредактировать?

Спасибо за помощь.

Ответы

Ответ 1

Невозможно настроить значение атрибута испущенного класса при использовании встроенных шаблонов редактора с помощью метода EditorFor. Он жестко кодирует значение класса (более подробная информация доступна здесь: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html)

У вас есть два варианта:

 <%: new HtmlString(Html.EditorFor(m=>m.ConfirmationHeadline).ToString()
        .Replace("class=\"text-box single-line\"", 
                 "class=\"text-box single-line span-11 last\"")) %>

Ответ 2

В MCV 5.1 вы можете воспользоваться htmlAttributes. Работает как прелесть...

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", placeholder = "Enter your Name" } })

Ответ 3

asp.net mvc создает файл с именем site.css в папке содержимого. Там вы можете увидеть, что по умолчанию класс текстового поля имеет ширину 30 м. Reset это что-то здраво, как 15em. Однострочный класс не представляется нигде.

Ответ 4

Вместо TextBoxFor можно использовать

Ответ 5

У меня была такая же проблема, и мне не понравилось ни одно из решений выше. Я также нашел подобное сообщение здесь, но мне тоже не нравились эти решения. После некоторого инструментария я нашел что-то, что мне понравилось, что позволило мне продолжать использовать шаблоны редакторов (что вы должны стараться использовать, когда можете). Я разместил решение здесь

Ответ 6

попробуйте этот код

@Html.Raw(
    Html.EditorFor(m => m.DataInicial).ToString()
    .Replace(
        "\"text-box single-line\"",
        "\"form-control text-box single-line\""))