内にカプセル化された HTML 要素に css クラスを挿入することは可能MvcHtmlString
ですか?
私は、構築中のフレームワークの一部として、フォーム要素 ( 、 など) の MVC 拡張メソッドの独自のバージョンを作成する任務を負っていますがTextBox
、TextBoxFor<>
次の注意事項があります。
- サイト用に既に設計されているスタイルに一致するように、CSS クラスを含む正しい HTML マークアップを作成する必要があります。ほとんどの場合、これは単に特定のクラスの追加を意味します。
- 開発者が快適に使用できるように、可能な限り MVC 拡張メソッドに忠実でなければならない
すべてではないにしても、ほとんどの MVC 拡張メソッドは を返すMvcHtmlString
ため、機能を模倣する最も簡単な方法は、これらのメソッドをメソッドから直接呼び出すことです。私のフレームワークが使用している独自の Html ヘルパー がOuHelper
あるので、たとえば a を作成したい開発者は、TextBox
次の行に沿って何かを呼び出します。
`@Ou.TextBoxFor(m => m.Username)
そして、結果のHtmlを次のようにレンダリングしたいと思います:
<input type="text" name="Username" id="Username" class="int-text" />
MVC フレームワークにあるように独自のバージョンのオーバーロードを作成すると、必要に応じて追加の CSS クラスを追加することを制御できますが、これらのメソッドからの HTML 出力の小さな変更にはやり過ぎのように思えます。すべてのオーバーロードの同等の実装を提供する必要があります (TextBox
ジェネリック バージョンと非ジェネリック バージョンを数えると、約 12 個あります)。私がやりたいことはTagBuilder
逆です(出力から始めて、そこからオブジェクトを作成して、利用可能にするなどMergeAttributes
のことを可能にします)が、それは可能だとは思いません。
明確にするために: 私が書いているフレームワーク コードは css クラス自体を追加する必要がありますが、開発者は、私が作成した拡張メソッドを使用して、独自のカスタム css クラスを追加することもできるはずです。これらは、標準の MVC フレームワーク フォーム拡張メソッドの機能に従って追加/追加されます。