CheckBox和RadioButton控制适配器

时间:2012-02-21 13:18:07

标签: .net web-controls control-adapter

我刚才写了一个控件适配器,用于CheckBoxList来改变标记,一切都很好 然后我为CheckBox写了一个适配器,再次都很好。
然后我注意到网站上的RadioButton在我的Checkbox控件适配器中使用了render方法。

由于RadioButton继承自CheckBox,它们总是被我的CheckBox控件adpater捕获。有什么方法可以阻止这个,因为我不想覆盖我的单选按钮的渲染,因为这意味着通过我的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" />

非常感谢。

1 个答案:

答案 0 :(得分:0)

我自己找到了一个解决方案,花了几个小时,但是......

如果为 RadioButton 添加控件适配器并在复选框适配器上方使用 HideDisabledControlAdapter 的adapterType,它将正常渲染单选按钮。

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