0

マークアップを変更する CheckBoxList のコントロール アダプターを少し前に作成しました。
次に、CheckBox 用のアダプターを作成しましたが、これもすべて問題ありません。
しかし、サイトの RadioButton が Checkbox コントロール アダプタの render メソッドを使用していることに気付きました。

RadioButton が CheckBox から継承されているため、CheckBox コントロール アダプターによって常にキャッチされます。CMS を介して他の多くのコードを変更することを意味するため、ラジオ ボタンのレンダリングをオーバーライドしたくないため、これを停止する方法はありますか。

または、オブジェクトがラジオボタンの場合、コントロール アダプターで Render メソッドをエスケープできますか?
最初は base.Render() を使用できると思っていましたが、明らかに間違った方向に進んでおり (それらはすべて WebControl/Control から継承されています)、本質的に「parent.Render()」が必要です。

何か案は?または、新しいコントロール アダプターでラジオ ボタンのレンダリングを複製する必要がありますか?

それが役立つ場合、私のブラウザファイルは次のとおりです...

<adapter controlType="System.Web.UI.WebControls.DropDownList" adapterType="Skylight.Core.Utility.ControlAdapters.DropDownListAdapter" />
<adapter controlType="System.Web.UI.WebControls.Image" adapterType="Skylight.Core.Utility.ControlAdapters.ImageAdapter" />
<adapter controlType="System.Web.UI.WebControls.CheckBoxList" adapterType="Skylight.Core.Utility.ControlAdapters.CheckBoxListAdapter" />
<adapter controlType="System.Web.UI.WebControls.CheckBox" adapterType="Skylight.Core.Utility.ControlAdapters.CheckBoxAdapter" />

どうもありがとう。
ダン

4

1 に答える 1

0

私はこれに対する解決策を自分で見つけましたが、数時間かかりましたが...

RadioButtonのコントロール アダプターを追加し、チェックボックス アダプターの上に HideDisabledControlAdapter のadapterTypeを使用すると、ラジオボタンが通常どおりにレンダリングされます。

<adapter controlType="System.Web.UI.WebControls.RadioButton" adapterType="System.Web.UI.WebControls.Adapters.HideDisabledControlAdapter" />

于 2012-02-21T14:12:04.060 に答える