html - How to get TagName of Control if exists? -
i have written code:
if (alohaenabled) dim head control = nothing each control in master.controls dim field = control.gettype.getfield("tagname") if ((field isnot nothing) andalso (field.getvalue(control).equals("head"))) 'add aloha scripts end if next end if
if alohaenabled
true
, intend add links , scripts head
tag. not know in advance kind of master
used, therefore iterate controls
, field called tagname
through reflection. if field
has value, compare "head"
, if match, intend add aloha script
s (the question more general though, need different scripts or somewhere else). tagname
field of system.web.ui.htmlcontrols.htmlcontrol. 0'th control
in test case returns
{name = "htmlhead" fullname = "system.web.ui.htmlcontrols.htmlhead"}
on control.gettype
. if @ system.web.ui.htmlcontrols.htmlhead, see inherits system.web.ui.htmlcontrols.htmlgenericcontrol, on turn inherits system.web.ui.htmlcontrols.htmlcontainercontrol, inherits htmlcontrol
. since tagname public
, expect control.gettype.getfield("tagname")
return
"head"
. instead of that, returns nothing
. wonder cause of behavior?
edit:
floatingkiwi right, problem was searching field, property, therefore did not find (what purpose of properties anyway, can resolve tasks methods). have used work-around in meantime:
each control in master.controls if (typeof control system.web.ui.htmlcontrols.htmlcontrol) dim htmlcontrol = ctype(control, system.web.ui.htmlcontrols.htmlcontrol) if (htmlcontrol.tagname.equals("head")) 'add aloha scripts end if end if next
i wonder superior solution: work-around, or property searching using reflection?
it's property not field. use
dim propinfo = control.gettype.getproperty("tagname")
instead.
that return propertyinfo object. actual value use
dim result = propinfo .getvalue(control, nothing)
Comments
Post a Comment