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 回答