7

内にカプセル化された HTML 要素に css クラスを挿入することは可能MvcHtmlStringですか?

私は、構築中のフレームワークの一部として、フォーム要素 ( 、 など) の MVC 拡張メソッドの独自のバージョンを作成する任務を負っていますがTextBoxTextBoxFor<>次の注意事項があります。

  • サイト用に既に設計されているスタイルに一致するように、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 フレームワーク フォーム拡張メソッドの機能に従って追加/追加されます。

4

2 に答える 2