0

我需要从我的网页动态地为任何类型的控件(例如文本框、标签、超链接等)设置文本属性。这是我的代码

foreach (string id in List<IdCollection>)
{
Control ctrl = (this.Page.FindControl(id)); // Control should be HtmlGenericControl or WebControl.
ctrl.Text=???(This property is not available for Control Class)..
}

我不需要检查设置文本属性的每个控件类型,如下面的代码

if(ctrl is TextBox)
{
((TextBox)ctrl).Text="test";
}

或者

 if(ctrl.GetType()==typeof(TextBox))
{
 ((TextBox)ctrl).Text="test";
}

有没有其他方法可以将文本属性设置为简单,就像下面的代码一样

WebControl wbCntrl=(WebControl)ctrl;
wbCntrl.Tooltip="tooltip"; //// This is possible
wbCntrl.Text="test" ??? //// But this is not possible

谢谢

4

1 回答 1

0

如果您使用的是 C# 4.0 (VS 2010),那么您可以使用“动态”关键字:

foreach (string id in List<IdCollection>)
{
  dynamic ctrl = (this.Page.FindControl(id)); 
  ctrl.Text = "test";
}

显然,如果您尝试在缺少 Text 属性的控件上执行此操作,您会遇到运行时异常。

于 2013-01-11T10:05:00.857 回答