Почему бритва не добавляет правильные классы начальной загрузки для управления формой?

Я только что скачал VS 2013, потому что это новая встроенная поддержка платформы Bootstrap.

Я создаю свои формы, но они отличаются от оригинальных загрузочных. Проблема в том, что кажется, что бритва и ее метод «EditorFor» не добавляют класс «form-control», необходимый для начальной загрузки.

Я мог бы добавить его как параметр html, но тогда мне пришлось бы делать это для каждого текстового поля на моем сайте.

Как я могу исправить/изменить Razor, чтобы он автоматически добавлял этот класс для этих объектов?


person Laggel    schedule 10.04.2014    source источник
comment
Сама Visual Studio мало чем отличается от того, что вы просите. Важны библиотеки/помощники MVC. Насколько я знаю, они изначально не поддерживают загрузку ... потому что это означало бы, что каждый раз, когда вы использовали EditorFor, он добавлял бы нежелательные классы к элементам управления, если бы вы не использовали загрузку.   -  person Simon Whitehead    schedule 10.04.2014


Ответы (3)


Попробуйте использовать TextBoxFor.

@Html.TextBoxFor(model => model.Title, new {style="border:1px solid red;"})

Это работает. и если вы хотите добавить любой класс

@Html.TextBoxFor(model => model.Title, new {@class="fooo"})

должно сработать.

person DarthVader    schedule 10.04.2014
comment
Это работает, но только с TextBoxFor, если я использую EditorFor по умолчанию, это не работает. Это означает, что мне придется заменить его во всем моем приложении... - person Laggel; 10.04.2014
comment
Да, как вы упомянули, они обещают получить редактор для работы в mvc 5.1, но не совсем хорошо. Лучше, если ты пойдешь с этим. Доказано, что это работает. - person DarthVader; 10.04.2014

Классы HTML всегда должны добавляться вручную. Ничто не сделает это за вас автоматически по умолчанию.

Есть несколько вариантов для вас:

person Rowan Freeman    schedule 10.04.2014
comment
Кажется, вы правы, я только что нашел этот asp. net/mvc/overview/releases/mvc51-release-notes#Bootstrap, но в любом случае я не могу заставить его работать, даже добавляя класс, как они сказали, он просто не добавляется. - person Laggel; 10.04.2014

В конце концов, это точно не ошибка, просто .NET решил не включать это. http://www.asp.net/mvc/overview/releases/mvc51-release-notes#Bootstrap

Самым простым способом, который я нашел, было использование Jquery и добавление класса во все поля, которые мне нужны, в моем случае все текстовые поля и списки выбора.

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")

<script>
    $(".text-box").addClass("form-control");
    $("select").addClass("form-control");
</script>
}
person Laggel    schedule 10.04.2014
comment
Это кажется мне слишком грязным. Я бы предложил не использовать бритву и добавить класс как обычный html. Для меня это создает большую гибкость, если я хочу добавить в форму такой фреймворк, как angular. - person trees_are_great; 27.11.2014