Подтвердить что ты не робот

Как добавить атрибут класса в 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 ко всем правилам стиля формы, но я еще не использовал меньше, поэтому я не уверен в этом.

Кто-нибудь знает лучший способ решить эту проблему?

4b9b3361

Ответ 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()) {...

который приятный и элегантный.