2012-07-12 3 views
14

я в состоянии получить идентификаторы всех элементов управления страницы, а также их типа, на странице, когда я напечатать это показываетПроверка типа управления

myPhoneExtTxt Type:System.Web.UI.HtmlControls.HtmlInputText 

это генерируется на основе этого кода

foreach (Control c in page) 
    { 
     if (c.ID != null) 
     { 
      controlList.Add(c.ID +" Type:"+ c.GetType()); 
     } 
    } 

Но теперь мне нужно, чтобы проверить его тип и доступ к тексту в нем, если его тип HtmlInput и я не совсем уверен, как это сделать.

Как

if(c.GetType() == (some htmlInput)) 
{ 
    some htmlInput.Text = "This should be the new text"; 
} 

, как я могу это сделать, я думаю, вы получите идею ?.

ответ

31

Это должно быть все, что вам нужно, если я получаю то, что вы спрашиваете:

if (c is TextBox) 
{ 
    ((TextBox)c).Text = "This should be the new text"; 
} 

Если ваша основная цель состоит в том, чтобы просто установить какой-нибудь текст:

if (c is ITextControl) 
{ 
    ((ITextControl)c).Text = "This should be the new text"; 
} 

Для того, чтобы поддержать скрытый также:

string someTextToSet = "this should be the new text"; 
if (c is ITextControl) 
{ 
    ((ITextControl)c).Text = someTextToSet; 
} 
else if (c is HtmlInputControl) 
{ 
    ((HtmlInputControl)c).Value = someTextToSet; 
} 
else if (c is HiddenField) 
{ 
    ((HiddenField)c).Value = someTextToSet; 
} 

Дополнительные элементы управления/интерфейсы должны быть добавлены к логике.

+0

делает это, если тип ввода скрыт? – user1416156

+0

К сожалению, нет. HiddenFields - противные маленькие ублюдки, потому что они не наследуют большую часть полезного и должны учитываться напрямую. Я отредактировал свой ответ, чтобы включить поддержку. –

+0

Также рассмотрите возможность использования оператора 'as' в типах таких проверок. –

Смежные вопросы