Перезапись класса на `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\""))