Ne peut pas accéder à l'ID de contrôle dans le code derrière
J'ai le code suivant dans ma page aspx:
<asp:Button runat="server" ID="myButton" Text="hello" />
et ceci dans mon code behind:
protected void Page_Load(object sender, EventArgs e)
{
myButton.Text = "bye";
}
Pour une raison quelconque, l'intellisense ramasse le "myButton" id dans le code-behind, mais lorsqu'il compile il dit
il ne peut pas se développer, car il ne veut pas le reconnaître!
Ma page est une page aspx par défaut qui utilise une page maître, le bouton est à l'intérieur d'un contrôle de contenu et tout est configuré pour s'exécuter sur le serveur correctement, la page s'exécute et affiche bien sauf pour ce bouton de résolution de problème!
Des idées?
- Pouvez-vous coller plus du code de balisage afin que nous puissions voir le contexte de la Touche?
Vous devez vous connecter pour publier un commentaire.
Semble que votre concepteur de fichier (PageName.le concepteur.cs) a un peu foiré. Je vais essayer de supprimer le bouton de votre page et l'ajouter à nouveau.
Si le bouton est à l'intérieur d'un conteneur de dénomination comme un répéteur, vous ne serez pas en mesure de l'utiliser comme ça. Au lieu de cela, vous avez besoin de faire quelque chose comme ceci:
J'ai rencontré le même problème, j'ai d'abord été à essayer de comprendre ce qui n'allait pas avec mon designer.cs fichier. Mais après j'ai réalisé que pour mon Formulaire de balisage j'ai été en utilisant un copier/coller à partir de la valeur par Défaut webform. Donc, le problème a été, comme Protecteur de l'un a dit assurez-vous de vérifier la hériter des biens de @Page:
J'ai trouvé une solution simple pour ce cas.
Il suffit d'ouvrir le fichier de concepteur et d'ajouter une ligne qui correspond à votre contrôle d'INTERFACE utilisateur.
Où myButton est
Id
de votre contrôle.J'ai rencontré le problème et j'ai remarqué que
Designer.cs
fichiers ont été exclus de mon projet.essayez de regarder pour les inclure à votre projet.
bonne chance
je sais que le problème est résolu, mais quand j'ai eu un problème similaire, quand j'ai le convertir WebAplication à Partir de c# VB - j'ai résolu ce problème en ajoutant de l'espace de Noms X /Fin de l'espace de Noms
J'ai eu le même problème aujourd'hui et dans mon cas, la solution était:
C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
Temporary ASP.NET Files
dossier.J'ai rencontré ce problème à plusieurs reprises. Parfois, il les noms de classe dans le concepteur et le code derrière ne correspondent pas. D'autres fois, ce sont les noms ne correspondent pas. D'autres fois, le concepteur de la page ne sera pas la variable de membre généré.
Comme mdresser mentionné, la régénération de la designer de fichier peut très bien prendre soin du problème. Assurez-vous que vous enregistrez la page aspx en premier.
Assurez-vous que vous n'avez pas de fichiers accidentellement essayer d'héritage ou de définir le même (partielle) de la classe. Ces fichiers peuvent être complètement indépendants où l'erreur est réellement apparue!
Il a été un long temps. Buuuut j'ai été confronté à ce même problème aujourd'hui, il semble donc que jamais, il est trop tard.
Pour moi ce qui se passait à cause de la
TextBox
était à l'intérieur d'un nonnamed forme. Puis j'ai mis un numéro d'identification à la forme et j'ai pu accéder à laTextBox
comme ceci:idForm.idTextBox.ToString()
. J'imagine que ça va se passer la même chose avec unbutton
.Problème c'est que vous pourriez avoir plusieurs fichiers aspx avec codefile dans la directive de page les points de même fichier code-behind.
Il attend le même contrôle existe dans tous les fichier aspx liée à même de code derrière et ainsi de jeter erreur de compilation.
Vérifier l'espace de noms dans les trois fichiers. Il y a parfois un décalage entre le nom d'espace de noms dans le concepteur.cs de fichiers et les deux autres fichiers. Assurez-vous de vérifier que le nom du nom de l'espace de match dans les trois fichiers
Il suffit de changer la hériter des biens en vertu de la balise page
changer de
Et vous verrez dans form2.aspx.desginer.cs le nom de la classe est également modifié et corrigé.
Laissez-Moi Vous Expliquer:
Disons que vous avez 2 formulaires web test1.aspx et test2.aspx. Vous avez copié un morceau de code à partir de test1.aspx pour test2.aspx, votre test2.fichier aspx va utiliser <% page tag:
qui était censé être comme:
en raison de laquelle votre test2.aspx.le concepteur.cs nom de la classe sera automatiquement changé en même test1.aspx.le concepteur.cs c'est un système de fichier généré et vous sera impossible d'utiliser votre Id de contrôle.
Après la correction de votre hériter de biens, Ouvrir et enregistrer des test2.aspx.le concepteur.cs pour vérifier et vous verrez que le nom de la classe est également changé.
ce sera comme:
Changé
Me remercier plus tard 😉