В проекте у меня есть несколько пользовательских WebUserControls для элементов формы (они содержат некоторые стандартные валидаторы и другие системные функции).Мои пользовательские элементы управления - «DropDownListField» и «TextBoxField».В коде страницы у меня есть этот код:
string parameterValue = null;
foreach (object control in myMultiView.Views[myMultiView.ActiveViewIndex].Controls)
{
if (control.GetType() == typeof(DropDownListField))
parameterValue = ((DropDownListField)control).Value;
if (control.GetType() == typeof(TextBoxField))
parameterValue = ((TextBoxField)control).Value;
}
По какой-то причине операторы "if" всегда возвращают false, даже когда я перехожу через код и вижу, что "контроль" назначается моей сетипользовательский контроль.Этот код в другом месте проекта точно такой же, за исключением того, что в другом месте используются стандартные элементы управления .net «TextBox» и «DropDownList», а в другом месте код работает.
Кто-нибудь знает, почемуэто не будет работать с пользовательскими веб-элементами управления?
ОБНОВЛЕНИЕ: Хм, поэтому при отладке я обнаружил следующее:
?control.GetType();
BaseType: {Name = "DropDownListField" FullName = "WebUI.UserControls.Fields.DropDownListField"}
?typeof(DropDownListField);
BaseType: {Name = "UserControl" FullName = "System.Web.UI.UserControl"}
Так что typeof просто признает, что это пользовательские элементы управления, а не полный тип, как кажется.
Кто-нибудь знает, как я проверю определенный тип пользовательского элемента управления?