2010-10-15 8 views
1

Cela semble très simple, mais pour une raison Im déconcerté ..ASP Net - Lancer un contrôle Request.Form du code derrière

Im générer dynamiquement un HTML sélectionner, permet de l'appeler MySELECT. Im créer cette boîte de sélection basée sur certaines valeurs de base de données Im générant une boîte de sélection HTML .. presque comme une chaîne que je crache juste à la page. Ce n'est donc jamais un contrôle dans le codebehind, juste une partie d'une chaîne rendue en HTML par le navigateur. Si je soumets ma forme, et dans mon codebehind je joue:

Dim myVal as String = Request.Form("myselect") 

Ce code me donne la valeur de la zone de sélection MySELECT. Comment puis-je me référer à ce contrôle pour le transformer en contrôle System.Web.UI.HtmlControls.HtmlSelect? Request.Form semble me donner la valeur, mais je veux référencer l'objet lui-même ..

Répondre

0

Si cette case sélectionnez n'est pas déclarée statique sur votre page (qui est, vous ajoutez à la collection Control), vous devez faire quelque chose comme ceci: Dim MySelect as HtmlSelect = Page.FindControl("MySelect") as HtmlSelect

Vous Je vais devoir me pardonner si ma syntaxe de casting est un peu éteinte - j'ai l'habitude de lancer en C#.

+0

Non, merci bien. Le contrôle n'est pas dans la collection, ce n'est pas un contrôle serveur, juste une boîte de sélection HTML qui a été rendue sur la page ... – ewitkows

+1

Vous ne pouvez pas référencer un contrôle rendu uniquement sur la page. Vous devez spécifier la propriété 'runat =" server "' pour référencer les contrôles dans codebehind. – jwiscarson

+0

Je m'inquiétais de ce qui était le cas :( – ewitkows

0

Si vous générez dynamiquement le contrôle dans votre fichier de code, il ne sera pas disponible pour vous lors de la publication. Tant que vous le générez à nouveau avant que viewstate ne soit traité (vous pouvez le faire dans votre oninit), vous pouvez y accéder comme vous le feriez pour n'importe quoi d'autre.

MySelect.SelectedValue 
+0

Merci Gabriel, laissez-moi clarifier les choses, basé sur une base de données des valeurs Im générer un HTML Sélectionnez Box .. presque comme une chaîne qui Im juste crachant à la page. Ce n'est donc jamais un contrôle dans le codebehind, juste une partie d'une chaîne rendue en HTML par le navigateur. Je vais aussi éditer ma question, alors peut-être que cela aura plus de sens .. – ewitkows

+1

Dans ce cas, il n'y a rien que vous puissiez faire. Pourquoi est-ce que vous avez besoin du contrôle? Peut-être y a-t-il une meilleure façon de l'ajouter à votre page qui vous donnera ce dont vous avez besoin. –

0

En réponse aux commentaires ci-dessus (merci pour votre aide), je l'ai trouvé ce que Gabriel McAdams et jwiscarson avaient à dire était vrai. En parcourant l'objet Request, j'ai trouvé que ce n'était rien de plus qu'une collection de paires clé/valeur. L'exécution de Request.Form ("myformobj") renvoie une valeur, car c'est tout ce qui est disponible pour l'application. Si nécessaire, je suppose que je peux monter un certain javascript astucieux pour suivre les types d'objets de formulaire, mais ce n'est certainement pas nécessaire dans mon cas.

Merci pour l'aide

Questions connexes