我正在尝试开发一个自动检测第一个子控件的自定义控件,该控件将呈现为输入标签。我这样做是因为我想知道我是否应该在HTML中将我的关联标题渲染为标签或span元素(有点像asp:Label
时给出AssociatedControlID
。< / p>
我发现大部分将作为输入字段呈现的HtmlControls
派生自基类HtmlInputControl
。但是我没有找到System.Web.UI.WebControls
命名空间中的控件的任何类。
所以我的问题是,我是否坚持用这样的反射挖掘受保护的属性“TagKey”:
var property = control.GetType()
.GetProperty("TagKey", BindingFlags.NonPublic | BindingFlags.Instance);
var tag = (HtmlTextWriterTag)property.GetValue(control, null);
还是我错过了什么?
答案 0 :(得分:0)
也许您应该检查控件是否实现了IPostBackDataHandler接口?这将使您能够选择为服务器提供价值的控件。虽然它们可能不一定呈现为input
。例如,DropDownList实现该接口,但呈现为select
...