2012-10-17 6 views
12

私のアプリケーションをBootstrap 2.1.1にアップグレードする過程にあり、クラス属性(class = "form-horizo​​ntal")をフォームタグの多くに追加します。問題は、ほとんどのフォームがむしろきれいなものを使用していることです。クラス属性を取得する明白な方法は、次のようなオーバーロードを使用することです:最小限のオーバーロードを維持しながら、MVC3/4のHtml.BeginForm()にクラス属性を追加するにはどうすればいいですか?

@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal" })) { 

しかし、私はそれをやりたいとは思いません。私のフォームにクラス属性を追加する最も良い方法は何ですか?

フォームに.addClass( "form-horizo​​ntal")のドキュメント準備完了ハンドラを使用することを考えましたが、ユーザには恐ろしい '非スタイル化コンテンツのフラッシュ'が表示されるのではないかと心配しています。

-style mix-inを使用すると、すべてのフォームスタイルルールに.form-horizo​​ntalクラスを追加することができますが、まだあまり使用していないので、これについてはわかりません1。

誰でもこの問題を解決する最善の方法を知っていますか?

答えて

14

'form-horizo​​ntal'で渡す、必要なオーバーロードを呼び出すカスタムヘルパーメソッドを書くのはどうですか?

次に、ビューには@using (Html.BootstrapBeginForm()) {が使用され、見栄えがよく整っています。

public static MvcForm BeginHorizontalForm(this HtmlHelper helper) { 
    return helper.BeginForm(null, null, FormMethod.Post, new { @class = "form-horizontal" }); 
} 

私は

@using (Html.BeginHorizontalForm()) {... 

を使用することができます:

+0

はい、そうです。ありがとう@ StanK –

20

はpタンクのアドバイス、およびSO上のいくつかの他の回答のアドバイスに続いて、私は特にそのブートストラップフォームのレイアウトに合わせた拡張メソッドを作成しましたいいとエレガントです。

+0

素晴らしい、ありがとう。 –

+2

このメソッドを 'FormExtensions'クラスに追加しましたか? – Chlebta

関連する問題