Как добавить атрибут класса в Html.BeginForm() в MVC3/4, сохраняя минимальную перегрузку
Я занимаюсь обновлением своего приложения до Bootstrap 2.1.1, и мне нужно добавить атрибут класса (class= "form-horizontal" ) ко многим тегам формы. Проблема в том, что большинство форм используют довольно красивые
@using (Html.BeginForm()) {
который я предпочел бы сохранить. Очевидный способ получить атрибут класса в нем - использовать следующую перегрузку, например:
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal" })) {
Но я бы предпочел не делать этого. Каков наилучший способ добавить атрибут класса в мою форму?
Я подумал об использовании готового обработчика документа jQuery к формам .addClass( "форма-горизонтально" ), но я беспокоюсь, что пользователи будут видеть страшную "вспышку неравномерного содержимого".
Другим подходом может быть использование менее -строчного mix-in, чтобы добавить .form-horizontal class ко всем правилам стиля формы, но я еще не использовал меньше, поэтому я не уверен в этом.
Кто-нибудь знает лучший способ решить эту проблему?
Ответы
Ответ 1
Как насчет написания специального вспомогательного метода, который вызывает требуемую перегрузку, проходящей в форме-горизонтальной?
Затем ваши представления будут использовать @using (Html.BootstrapBeginForm()) {
, оставив ваши взгляды красивыми и аккуратными.
Ответ 2
Следуя советам StanK и советам других ответов на SO, я создал метод расширения, специально разработанный для этого макета формы Bootstrap:
public static MvcForm BeginHorizontalForm(this HtmlHelper helper) {
return helper.BeginForm(null, null, FormMethod.Post, new { @class = "form-horizontal" });
}
что позволяет мне использовать
@using (Html.BeginHorizontalForm()) {...
который приятный и элегантный.