Как динамически установить свойство текста для любого типа веб-элементов управления с веб-страницы

Мне нужно установить свойство текста для любого типа элементов управления (например, Textbox,Label,HyperLink..etc) с моей веб-страницы динамически. Вот мой код

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

Спасибо

1 ответ

Если вы используете C# 4.0 (VS 2010), вы можете использовать ключевое слово "dynamic":

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

Очевидно, вы получите исключение времени выполнения, если попытаетесь сделать это для элемента управления, в котором отсутствует свойство Text.

Другие вопросы по тегам