Naam bestaat niet in de huidige context

Dus ik werk aan dit project tussen mijn laptop en mijn desktop.

Het project werkt op de laptop, maar nu ik de bijgewerkte broncode naar de desktop heb gekopieerd, heb ik meer dan 500 fouten in het project, ze zijn allemaal…

De naam bestaat niet in de huidige context

Hier is een voorbeeld…

Vacatures.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>

Vacatures.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
}

Hier is een voorbeeld van het designer.cs-bestand…

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;
    }
}

Ik weet dat deze fout betekent dat het besturingselement waarnaar wordt verwezen in het algemeen niet bestaat of geen deel uitmaakt van de klasse die ernaar verwijst, maar voor zover ik kan zien, is dat hier niet het geval.

Kan iemand enig inzicht geven?

VS2012 Screenshot


Antwoord 1, autoriteit 100%

Vacatures.aspx

Dit is het fysieke bestand -> CodeFile="Jobs.aspx.cs"

Dit is de klasse die de gebeurtenissen van de pagina afhandelt -> Inherits="Members_Jobs"

Vacatures.aspx.cs

Dit is de gedeeltelijke klasse die de paginagebeurtenissen beheert -> public partial class Members_Jobs : System.Web.UI.Page

Het andere deel van de gedeeltelijke klasse moet -> public partial class Members_Jobs dit is meestal het ontwerperbestand.

je hoeft geen gedeeltelijke klassen te hebben en je kunt je besturingselementen allemaal in 1 klasse declareren en geen ontwerperbestand hebben.

BEWERKEN 27/09/2013 11:37

Als je hier nog steeds problemen mee hebt, zou ik doen wat Bharadwaj voorstelde en het ontwerperbestand verwijderen. U kunt dan met de rechtermuisknop op de pagina klikken, in de oplossingenverkenner, en er is een optie, zoiets als “Converteren naar webtoepassing”, waarmee uw ontwerperbestand opnieuw wordt gegenereerd


Antwoord 2, autoriteit 90%

Voor het geval iemand een beginner is die al het bovenstaande heeft geprobeerd en er nog steeds niet in is geslaagd om het project werkend te krijgen. Controleer uw naamruimte. In het geval dat u code van het ene project naar het andere kopieert en u vergeet de naamruimte van het project te wijzigen, krijgt u ook deze fout.

Ik hoop dat het iemand helpt.


Antwoord 3, autoriteit 40%

“Het project werkt op de laptop, maar nu de bijgewerkte broncode naar de desktop is gekopieerd …”

Ik heb iets soortgelijks gedaan, twee versies van een project maken en bestanden ertussen kopiëren. Het gaf me dezelfde fout.

Mijn oplossing was om naar het projectbestand te gaan, waar ik ontdekte dat wat er zo uit had gezien:

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

Zo zag er nu uit:

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

Toen ik ze weer veranderde, was Visual Studio weer blij.


Antwoord 4, autoriteit 40%

Van de MSDN-website:

Deze fout komt vaak voor als u een variabele declareert in een lus of a
try or if block en probeer dan toegang te krijgen via een insluitende code
blok of een apart codeblok.

Declareer de variabele dus buiten het blok.


Antwoord 5, autoriteit 27%

Ik had dit probleem in mijn hoofdproject toen ik naar een dll-bestand verwees.

Het probleem was dat het hoofdproject dat naar de dll verwees, zich richtte op een versie met een lager framework dan die van de dll.

Dus ik heb mijn doelframework-versie verhoogd (klik met de rechtermuisknop op project -> Application -> Target-framework) en de fout is verdwenen.


Antwoord 6, autoriteit 20%

Ik kwam een ​​soortgelijk probleem tegen met een metatag. In de designer.cs werd het besturingselement gedefinieerd als:

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

Ik moest de definitie naar het bestand .aspx.cs verplaatsen en definiëren als:

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

Antwoord 7, autoriteit 7%

Ik had ook een soortgelijk probleem, het probleem was dat het formulier zich in een map bevond en het bestand .aspx.designer.cs Ik had de naamruimte specifiek verwijzend naar die map; waardoor de fout in verschillende componenten verscheen:

El nombre no existe en el contexto actual

In jouw geval is een mogelijke oplossing om de regel namespace van het bestand Members_Jobs.aspx.designer.cs globaal te laten staan, dwz dit te wijzigen

namespace stman.Members {

Hiervoor

namespace stman {

Dat heeft me geholpen het probleem op te lossen.

Ik hoop behulpzaam te zijn


Antwoord 8

Ik heb de mijne opgelost door een importrichtlijn te gebruiken onder mijn paginarichtlijn. Misschien wilt u ook de naamruimte toevoegen aan uw Inherits-attribuut van uw pagina-instructie.

Aangezien het erop lijkt dat uw standaardnaamruimte “stman.Members” is, probeert u:

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

Bovendien heb ik gegevens die ik wilde doorgeven tussen aspx.cs en aspx, in een statische klasse in de naamruimte geplaatst. Die statische klasse was beschikbaar om gegevens in de naamruimte te verplaatsen en heeft niet langer de foutmelding ‘niet in context’.


Antwoord 9

Ik heb ook met een soortgelijk probleem te maken gehad. De reden was dat ik de wijzigingen had aangebracht op de .aspx-pagina, maar niet op de ontwerperpagina en daarom kreeg ik de genoemde fout. Toen de referentie op de ontwerppagina werd gemaakt, kon ik de oplossing bouwen.


Antwoord 10

Hetzelfde probleem deed zich bij mij voor toen ik per ongeluk wat tekst toevoegde voor de bovenste richtlijn van de hoofdpagina. Alle besturingselementen op alle pagina’s die in mijn project waren opgenomen, werden weergegeven, bestaat niet in de huidige context. Na veel tijd op het forum en zelfanalyse te hebben doorgebracht, vond ik de ten onrechte toegevoegde tekst en verwijderde, maar het probleem werd niet opgelost. Toen moest ik op elke fout klikken om de bijbehorende pagina te openen, zodat VS de pagina kan laden en herkennen. Zodra de code in VS was geladen, begon de fout van die specifieke pagina te verdwijnen omdat VS deze herkende. klikken op elke fout, het laden van elke pagina in de VS-editor deed de truc voor mij en je hoeft het maar één keer te doen omdat het later automatisch wordt herkend door VS. Ik zou zeggen dat het een Visual Studio Glitch is.


Antwoord 11

In ons geval, naast het wijzigen van ToolsVersion van 14.0 naar 15.0 in het .csproj-projectbestand, zoals aangegeven door Dominik Litschauer, we moesten ook een bijgewerkte versie van MSBuild installeren, omdat compilatie wordt geactiveerd door een Jenkins-taak. Nadat we Build Tools voor Visual Studio 2019 hadden geïnstalleerd, hadden we MsBuild versie 16.0 en waren alle nieuwe C#-functies goed gecompileerd.


Antwoord 12

Ik kwam hierop en ontdekte dat een paar bestanden die werden gebruikt voor foutopsporing dezelfde waarden voor CodeFile en Inherits hadden. Door ze uniek te maken, is mijn probleem opgelost.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

five × five =

Other episodes