Vérifier le type de contrôle
Je suis en mesure d'obtenir les Identifiants de tous les contrôles d'une page, et également de leur type, dans la page lors de l'impression il montre
myPhoneExtTxt Type:System.Web.UI.HtmlControls.HtmlInputText
c'est généré sur la base de ce code
foreach (Control c in page)
{
if (c.ID != null)
{
controlList.Add(c.ID +" Type:"+ c.GetType());
}
}
Mais maintenant j'ai besoin de vérifier son type et l'accès au texte si son de type HtmlInput et je ne suis pas tout à fait sûr de savoir comment le faire.
Comme
if(c.GetType() == (some htmlInput))
{
some htmlInput.Text = "This should be the new text";
}
comment puis-je faire cela, je pense que vous voyez l'idée?.
OriginalL'auteur user1416156 | 2012-07-12
Vous devez vous connecter pour publier un commentaire.
Cela devrait être tout ce que vous devez faire si je reçois ce que vous demandez:
Si votre objectif principal est de juste mettre du texte:
Dans le but de soutenir un champ caché:
Des contrôles supplémentaires/interfaces doivent être ajoutés à la logique.
Malheureusement, aucune. HiddenFields sont méchants petits salauds qu'ils n'héritent pas de beaucoup de chose utile et doit être comptabilisé directement. J'ai édité ma réponse pour inclure le support.
Pensez également à utiliser le
as
opérateur dans les vérifications de type comme celles-ci.Je suis curieux de savoir comment vous mettre en œuvre que lors de l'essai de la façon d'effectuer un one-liner rapport à N-conversions possibles? Souhaitez-vous définissez N détenteurs de l'avance, alors essayez d'attribuer et de vérifier la valeur null pour chacun?
Bien entendu, il est en lui-même une odeur de code si nous avons besoin d'une liste hiérarchisée des types comme ici. Mais je suis d'accord, il peut être difficile à utiliser
as
avec quielse
-if
de la chaîne. Vous pourriez facteur d'une méthode et d'utiliserreturn
au lieu de laelse
. Par exemple:var textControl = c as ITextControl; if (textControl != null) { textControl.Text = x; return; } var htmlInputControl = c as HtmlInputControl; if (htmlInputControl != null) { htmlInputControl.Value = x; return; }
etc.OriginalL'auteur Jaime Torres