自定义控件,用于检测将呈现为html输入字段的第一个子控件

本文关键字:字段 输入 第一个 控件 html 用于 检测 自定义控件 | 更新日期: 2023-09-27 18:17:25

我试图开发一个自定义控件,自动检测将呈现为输入标记的第一个子控件。我这样做是因为我想知道我是否应该将我的关联标题呈现为HTML中的标签或span元素(有点像asp:Label在给定AssociatedControlID时的工作)。

我发现,大多数HtmlControls将被渲染为输入字段派生自基类HtmlInputControl。但我没有找到任何类相似的控件在System.Web.UI.WebControls命名空间。

所以我的问题是,我是否坚持挖掘受保护的属性"TagKey",像这样的反射:

var property = control.GetType()
    .GetProperty("TagKey", BindingFlags.NonPublic | BindingFlags.Instance);
var tag = (HtmlTextWriterTag)property.GetValue(control, null);

还是我错过了什么?

自定义控件,用于检测将呈现为html输入字段的第一个子控件

也许你应该检查一个控件是否实现了IPostBackDataHandler接口?这将使您能够选择向服务器提供值的控件。虽然它们不一定被渲染为input。例如,DropDownList实现了该接口,但呈现为select