J'ai le code suivant dans ma page aspx:
<asp:Button runat="server" ID="myButton" Text="hello" />
et ceci dans mon code derrière:
protected void Page_Load(object sender, EventArgs e)
{
myButton.Text = "bye";
}
Pour une raison quelconque, intellisense récupère l’identifiant "myButton" dans le code, mais lorsqu’il compile, il dit
il ne peut pas construire parce qu'il ne le reconnaît pas!
Ma page est une page aspx par défaut qui utilise une page maître, le bouton se trouve dans un contrôle de contenu et tout est configuré pour s'exécuter correctement sur le serveur. La page est correctement affichée, à l'exception du problème de résolution du bouton!
Des idées?
On dirait que votre fichier de concepteur (PageName.designer.cs) est un peu foiré. J'essayerais de supprimer le bouton de votre page et de l'ajouter à nouveau.
Si le bouton est dans un conteneur de nommage tel qu'un répéteur, vous ne pourrez pas l'utiliser comme ça. Au lieu de cela, vous devez faire quelque chose comme ceci:
Button myButton = (Button)Container.FindControl("myButton");
myButton.Text = "bye";
J'ai rencontré le même problème. J'essayais tout d'abord de comprendre ce qui n'allait pas avec mon fichier designer.cs. Mais après avoir réalisé que pour mon balisage WebForm, j'utilisais un copier/coller du formulaire Web par défaut. Donc, le problème était, comme Protector un dit, assurez-vous de vérifier la propriété héritée de @Page:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="InputValidation._Default" %>
J'ai trouvé une solution simple pour ce cas.
Ouvrez simplement le fichier du concepteur et ajoutez une ligne correspondant à votre contrôle d'interface utilisateur.
protected global::System.Web.UI.WebControls.Button myButton;
Où myButton est Id
de votre contrôle.
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
.je sais que ce problème est résolu, mais lorsque j’ai eu un problème similaire, lorsque j’ai converti une application Web de c # à VB - j’ai résolu ce problème en ajoutant Namespace X/End Namespace
J'ai fait face au problème et j'ai remarqué que les fichiers Designer.cs
étaient exclus de mon projet.
Essayez de les rechercher, incluez-les à nouveau dans votre projet.
bonne chance
Ça fait longtemps. Buuuut, je faisais face au même problème aujourd'hui, il semble donc qu'il n'est jamais trop tard. Pour moi, cela se passait parce que la TextBox
était dans une forme non nommée. Ensuite, j'ai défini un identifiant pour le formulaire et j'ai pu accéder à la TextBox
comme ceci: idForm.idTextBox.ToString()
. Je suppose que cela va se passer de la même manière avec un button
.
Assurez-vous qu'aucun fichier ne tente accidentellement d'hériter ou de définir la même classe (partielle). Ces fichiers peuvent être complètement indépendants de l'endroit où l'erreur est réellement apparue!
J'ai rencontré ce problème à quelques reprises. Parfois, les noms de classe dans le concepteur et le code ne correspondent pas. D'autres fois, c'est l'espace de noms qui ne correspond pas. D'autres fois, la page de concepteur ne génère pas la variable membre.
Comme mdresser l’a mentionné, la régénération très efficace du fichier de concepteur peut résoudre le problème. Assurez-vous d’abord d’enregistrer la page aspx.
Le problème est que vous pouvez avoir plusieurs fichiers aspx avec codefile dans la directive de page pointant sur le même codebehind fichier . Il s'attend à ce que le même contrôle existe dans tous les fichiers aspx liés au même code derrière, générant ainsi une erreur de compilation.
Il suffit de changer la propriété inherit sous balise de page
<% Page inherit = "Project_Name.otherform"
changez le en
<% Page inherit = "Project_Name.YourForm"
Et vous verrez dans form2.aspx.desginer.cs que le nom de la classe est également modifié et corrigé.
Laissez-moi expliquer: Disons que vous avez 2 formulaires Web test1.aspx et test2.aspx. Vous avez copié une partie du code de test1.aspx dans test2.aspx, votre fichier test2.aspx utilisera la balise <% page en tant que:
<% Page inherit = "Project_Name.test1"
qui était censé être comme:
<% Page inherit = "Project_Name.test2"
pour cette raison, le nom de votre classe test2.aspx.designer.cs sera automatiquement remplacé par le même que test1.aspx.designer.cs car il s'agit d'un fichier système et vous ne pourrez pas utiliser vos ID de contrôle.
Après avoir corrigé votre propriété inherit, enregistrez et ouvrez test2.aspx.designer.cs pour le vérifier et vous verrez que le nom de la classe est également modifié . Il ressemblera à ceci:
public partial class test1
{
...
Changé en
public partial class test2
{
...
Merci moi plus tard;)
Vérifiez l'espace de noms dans les trois fichiers . Il y a parfois une différence entre le nom de l'espace de noms dans le fichier designer.cs et les deux autres fichiers. Assurez-vous de vérifier que le nom de l'espace de noms correspond dans les trois fichiers.