webentwicklung-frage-antwort-db.com.de

Der Name ist im aktuellen Kontext nicht vorhanden

Also arbeite ich an diesem Projekt zwischen meinem Laptop und meinem Desktop.

Das Projekt funktioniert auf dem Laptop, aber nachdem ich nun den aktualisierten Quellcode auf den Desktop kopiert habe, habe ich über 500 Fehler in dem Projekt. Alle sind ...

Der Name ist im aktuellen Kontext nicht vorhanden

Hier ist ein Beispiel ...

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
}

Hier ist ein Beispiel der designer.cs-Datei ...

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

Ich weiß, dass dieser Fehler bedeutet, dass das Steuerelement, auf das verwiesen wird, im Allgemeinen nicht existiert oder nicht Teil der Klasse ist, auf die es verweist, aber soweit ich sehen kann, ist dies hier nicht der Fall.

Kann jemand einen Einblick geben?

VS2012 Screenshot

38
Ortund

Jobs.aspx

Dies ist die physische Datei -> CodeFile="Jobs.aspx.cs" 

Dies ist die Klasse, die die Ereignisse der Seite behandelt -> Inherits="Members_Jobs"

Jobs.aspx.cs

Dies ist die partial Klasse, die die Seitenereignisse verwaltet -> public partial class Members_Jobs : System.Web.UI.Page

Der andere Teil der partial class sollte -> public partial class Members_Jobs sein. Dies ist normalerweise die Designer-Datei.

sie brauchen keine Teilklassen und könnten Ihre Steuerelemente in einer Klasse deklarieren und haben keine Designer-Datei.

EDIT27/09/2013 11:37

wenn Sie immer noch Probleme damit haben, würde ich Bharadwaj vorschlagen und die Designer-Datei löschen. Sie können dann mit der rechten Maustaste auf die Seite im Projektmappen-Explorer klicken, und es gibt eine Option, etwa "In Webanwendung konvertieren", mit der Ihre Designer-Datei neu erstellt wird

11
Secret Squirrel

Für den Fall, dass jemand ein Anfänger ist, der alle oben genannten Möglichkeiten ausprobiert hat und es trotzdem nicht geschafft hat, das Projekt zum Laufen zu bringen. Überprüfen Sie Ihren Namespace. Wenn Sie Code von einem Projekt in ein anderes kopieren und vergessen, den Namespace des Projekts zu ändern, wird dieser Fehler ebenfalls angezeigt.

Hoffe es hilft jemandem.

10
TheDanMan

"Das Projekt funktioniert auf dem Laptop, aber jetzt wurde der aktualisierte Quellcode auf den Desktop kopiert ..."

Ich habe etwas Ähnliches gemacht, zwei Versionen eines Projekts erstellt und Dateien zwischen ihnen kopiert. Es gab mir den gleichen Fehler.

Meine Lösung bestand darin, in die Projektdatei zu gehen, wo ich entdeckte, dass das, was wie folgt aussah:

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

Jetzt sah es so aus:

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

Als ich sie zurückwechselte, war Visual Studio wieder glücklich.

4
TomDestry

Ich bin auf ein ähnliches Problem mit einem Meta-Tag gestoßen. Im designer.cs wurde das Steuerelement definiert als:

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

Ich musste die Definition in die .aspx.cs-Datei verschieben und definieren als:

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

Auf der MSDN-Website: 

Dieser Fehler tritt häufig auf, wenn Sie eine Variable in einer Schleife oder einem .__ deklarieren. try oder if blockieren und dann versuchen, von einem einschließenden Code darauf zuzugreifen Block oder einen separaten Codeblock.

Deklarieren Sie also die Variable außerhalb des Blocks.

2
cars4chimps

Ich hatte dieses Problem in meinem Hauptprojekt, als ich auf eine DLL-Datei verwies.

Das Problem war, dass das Hauptprojekt, das auf die DLL referenzierte, auf eine niedrigere Framework-Version abzielte als die der DLL.

Also habe ich meine Ziel-Framework-Version (Rechtsklick-Projekt -> Anwendung -> Ziel-Framework) installiert und der Fehler ist verschwunden.

1
tno2007

Ich habe mein Problem mit einer Import-Direktive unter meiner Page-Direktive gelöst. Sie können den Namespace auch Ihrem Inherits-Attribut Ihrer Page-Direktive hinzufügen.

Da es scheint, dass Ihr Standard-Namespace "stman.Members" ist, versuchen Sie Folgendes: <%@ Page Title="" Language="C#" MasterPageFile="~/Members/Members.master" AutoEventWireup="true" CodeFile="Jobs.aspx.cs" Inherits="stman.Members.Members_Jobs" %> <%@ Import Namespace="stman.Members"%>

Darüber hinaus habe ich Daten, die ich zwischen aspx.cs und aspx übergeben wollte, in eine statische Klasse in den Namespace eingefügt. Diese statische Klasse war zum Verschieben von Daten im Namensraum verfügbar und hat nicht mehr den Fehler "Nicht im Kontext".

0
Jroonk

Ich hatte auch ein ähnliches Problem, das Problem war, dass sich das Formular in einem Ordner befand und die Datei .aspx.designer.cs. Ich hatte den Namespace, der speziell auf dieses Verzeichnis verweist. wodurch der Fehler in mehreren Komponenten angezeigt wurde:

El nombre no existe en el contexto actual

In Ihrem Fall ist dies eine mögliche Lösung, wenn Sie die Zeile namespace der Members_Jobs.aspx.designer.cs-Datei global angeben, dh ändern

namespace stman.Members {

Dafür

namespace stman {

Das hat mir geholfen, das Problem zu lösen.

Ich hoffe hilfsbereit zu sein

Ich war auch mit einem ähnlichen Problem konfrontiert. Der Grund war, dass ich die Änderungen in der ASPX-Seite vorgenommen habe, aber nicht die Designerseite. Daher erhielt ich den erwähnten Fehler. Als die Referenz auf der Designerseite erstellt wurde, konnte ich die Lösung erstellen.

0
Aarthy

Dasselbe Problem trat bei mir auf, als ich versehentlich einen Text vor der obersten Direktive der Masterseite hinzufügte. Alle Steuerelemente auf der gesamten Seite, die in meinem Projekt angezeigt wurden, sind im aktuellen Kontext nicht vorhanden. Nachdem ich viel Zeit im Forum und in der Selbstanalyse verbracht hatte, fand ich den fälschlicherweise hinzugefügten Text und entfernte ihn, aber das Problem konnte nicht gelöst werden. Dann musste ich auf jeden Fehler klicken, um die zugehörige Seite zu öffnen, damit VS die Seite laden und erkennen konnte. Sobald der Code in VS geladen wurde, verschwand der Fehler von dieser bestimmten Seite, weil VS ihn erkannte. Wenn Sie auf jeden Fehler klicken, hat das Laden jeder Seite im VS-Editor den Trick für mich gemacht und Sie müssen es nur einmal tun, da es später automatisch von VS erkannt wird. Ich würde sagen, es ist ein Visual Studio Glitch.

0

In unserem Fall mussten wir neben der Änderung von ToolsVersion von 14.0 auf 15.0 in der .csproj-Projektdatei, wie von Dominik Litschauer angegeben , auch eine aktualisierte Version von MSBuild installieren, da die Kompilierung von einem Jenkins-Job ausgelöst wird . Nach der Installation von Build Tools für Visual Studio 2019 hatten wir MsBuild Version 16.0 und alle neuen C # -Funktionen wurden ordnungsgemäß kompiliert.

0
Julio Nobre