Как динамически установить свойство текста для любого типа веб-элементов управления с веб-страницы
Мне нужно установить свойство текста для любого типа элементов управления (например, 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.