Перезапись класса в `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"}) %>
и должен работать... эээ... нет!
это выведет точно такой же код!
хотя, отлично работает с Html.TextAreaFor()
Как я могу удалить класс text-box single-line
когда-нибудь появлялись, чтобы мои собственные классы могли быть добавлены? любой шаблон Т4, который я должен отредактировать?
Спасибо за всю помощь.
6 ответов
При использовании встроенных шаблонов редактора через EditorFor
метод. Он жестко кодирует значение класса (более подробная информация доступна здесь: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html).
У вас есть два варианта:
Напишите свой собственный шаблон, который поддерживает дополнительные функции. Посмотрите здесь для получения дополнительной информации: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html
Обработать вывод
EditorFor
метод:
<%: new HtmlString(Html.EditorFor(m=>m.ConfirmationHeadline).ToString()
.Replace("class=\"text-box single-line\"",
"class=\"text-box single-line span-11 last\"")) %>
В MCV 5.1 вы можете воспользоваться htmlAttributes. Работает как шарм...
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", placeholder = "Enter your Name" } })
asp.net mvc создает файл с именем site.css в папке содержимого. Там вы можете видеть, что класс текстового поля по умолчанию имеет ширину 30 мкм. Сбросить на что-нибудь более разумное, как 15em. Класс из одной строки, кажется, нигде не определен.
У меня была такая же проблема, и мне не понравилось ни одно из приведенных выше решений. Я также нашел подобный пост здесь, но мне тоже не понравились эти решения. После некоторой обработки я нашел что-то, что мне понравилось, что позволило мне продолжать использовать шаблоны редактора (это то, что вы должны попытаться использовать в своих интересах, когда можете). Я разместил решение здесь
Попробуй этот код
@Html.Raw(
Html.EditorFor(m => m.DataInicial).ToString()
.Replace(
"\"text-box single-line\"",
"\"form-control text-box single-line\""))