web-dev-qa-db-fra.com

Le nom n'existe pas dans le contexte actuel

Je travaille donc sur ce projet entre mon ordinateur portable et mon ordinateur de bureau.

Le projet fonctionne sur l'ordinateur portable, mais maintenant que j'ai copié le code source mis à jour sur le bureau, j'ai plus de 500 erreurs dans le projet, toutes sont ...

Le nom n'existe pas dans le contexte actuel

Voici un exemple ...

Jobs.aspx  

<%@ Page Title="" Language="C#" MasterPageFile="~/Members/Members.master" AutoEventWireup="true" CodeFile="Jobs.aspx.cs" Inherits="Members_Jobs" %>

<%@ Register Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit" TagPrefix="aj" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <asp:UpdatePanel runat="server" ID="upJobs">
        <ContentTemplate>
            <!-- page content goes here -->
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Content>

Jobs.aspx.cs  

public partial class Members_Jobs : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            loadJobs();
            gvItems.Visible = false;
            loadComplexes();
            loadBusinesses();
            loadSubcontractors();
            loadInsurers();

            pnlCallback.Visible = false;
            pnlInsurer.Visible = false;
        }
    }

    // more goes down here
}

Voici un exemple du fichier designer.cs ...

namespace stman.Members {


    public partial class Jobs {

        /// <summary>
        /// upJobs control.
        /// </summary>
        /// <remarks>
        /// Auto-generated field.
        /// To modify move field declaration from designer file to code-behind file.
        /// </remarks>
        protected global::System.Web.UI.UpdatePanel upJobs;
    }
}

Je sais que cette erreur signifie que le contrôle référencé n'existe généralement pas ou qu'il ne fait pas partie de la classe qui le référence, mais à ma connaissance, ce n'est pas le cas ici.

Quelqu'un peut-il donner un aperçu?

VS2012 Screenshot

38
Ortund

Jobs.aspx

Ceci est le fichier phyiscal -> CodeFile="Jobs.aspx.cs" 

C'est la classe qui gère les événements de la page -> Inherits="Members_Jobs"

Jobs.aspx.cs

C’est la classe partial qui gère les événements de page -> public partial class Members_Jobs : System.Web.UI.Page

L'autre partie de la classe partial devrait être -> public partial class Members_Jobs, il s'agit généralement du fichier de concepteur.

vous n'avez pas besoin d'avoir des classes partielles et pouvez déclarer vos contrôles dans une classe sans avoir de fichier de concepteur.

EDIT27/09/2013 11:37

si vous rencontrez toujours des problèmes, je ferais ce que Bharadwaj avait suggéré et supprimerais le fichier du concepteur. Vous pouvez ensuite cliquer avec le bouton droit de la souris sur la page dans l'explorateur de la solution. Une option, quelque chose comme "Convertir en application Web", régénérera votre fichier de concepteur.

11
Secret Squirrel

Au cas où quelqu'un de débutant aurait essayé tout ce qui est décrit ci-dessus et n'aurait toujours pas réussi à faire fonctionner le projet. Vérifiez votre espace de noms. Dans un cas où vous copiez le code d'un projet à un autre et que vous oubliez de modifier l'espace de noms du projet, cela vous donnera également cette erreur.

J'espère que ça aide quelqu'un.

10
TheDanMan

"Le projet fonctionne sur l'ordinateur portable, mais après avoir copié le code source mis à jour sur le bureau ..."

J'ai fait quelque chose de similaire en créant deux versions d'un projet et en copiant des fichiers entre elles. Cela m'a donné la même erreur.

Ma solution a été d'aller dans le fichier de projet, où j'ai découvert que cela ressemblait à ceci:

<Compile Include="App_Code\Common\Pair.cs" />
<Compile Include="App_Code\Common\QueryCommand.cs" />

Maintenant ressemblait à ceci:

<Content Include="App_Code\Common\Pair.cs">
  <SubType>Code</SubType>
</Content>
<Content Include="App_Code\Common\QueryCommand.cs">
  <SubType>Code</SubType>
</Content>

Lorsque je les ai modifiés, Visual Studio était à nouveau heureux.

4
TomDestry

Je suis tombé sur un problème similaire avec une balise méta. Dans le designer.cs, le contrôle a été défini comme suit:

protected global::System.Web.UI.HtmlControl.HtmlGenericControl metatag;

Je devais déplacer la définition dans le fichier .aspx.cs et définir comme suit:

protected global::System.Web.UI.HtmlControl.HtmlMeta metatag;
3
user2776839

Sur le site Web MSDN: 

Cette erreur se produit fréquemment si vous déclarez une variable dans une boucle ou un fichier try ou if block puis essayez d'y accéder à partir d'un code englobant bloc ou un bloc de code séparé.

Alors déclarez la variable en dehors du bloc.

2
cars4chimps

J'ai eu ce problème dans mon projet principal lorsque j'ai référencé un fichier dll.

Le problème était que le projet principal qui a référencé la dll visait une version de framework inférieure à celle de la dll.

J'ai donc amélioré la version de mon infrastructure cible (projet du clic droit -> Application -> infrastructure de la cible) et l'erreur a disparu.

1
tno2007

J'ai résolu le mien en utilisant une directive d'importation en vertu de ma directive Page. Vous pouvez également vouloir ajouter l'espace de noms à votre attribut Inherits de votre directive Page.

Comme il semble que votre espace de noms par défaut soit "stman.Members", essayez: <%@ Page Title="" Language="C#" MasterPageFile="~/Members/Members.master" AutoEventWireup="true" CodeFile="Jobs.aspx.cs" Inherits="stman.Members.Members_Jobs" %> <%@ Import Namespace="stman.Members"%>

De plus, les données que je voulais transmettre entre aspx.cs et aspx, je les ai placées dans une classe statique à l'intérieur de l'espace de noms. Cette classe statique était disponible pour déplacer des données dans l'espace de noms et n'a plus d'erreur "Pas dans le contexte".

0
Jroonk

J'ai également rencontré un problème similaire, le problème était que le formulaire se trouvait dans un dossier et le fichier .aspx.designer.cs, l'espace de nom faisant référence à ce répertoire; qui a provoqué l'apparition de l'erreur dans plusieurs composants:

El nombre no existe en el contexto actual

Ceci dans votre cas, une solution possible est de laisser la ligne namespace du fichier Members_Jobs.aspx.designer.cs spécifié globalement, c'est-à-dire de

namespace stman.Members {

Pour ça

namespace stman {

C'est ce qui m'a aidé à résoudre le problème.

J'espère être utile

0

J'ai également fait face à un problème similaire. La raison en est que les modifications ont été effectuées dans la page .aspx, mais pas dans la page du concepteur. C'est pourquoi j'ai l'erreur mentionnée. Lorsque la référence a été créée dans la page du concepteur, j'ai pu construire la solution.

0
Aarthy