59

所以,我正在我的笔记本电脑和台式机之间进行这个项目。

该项目在笔记本电脑上工作,但现在将更新的源代码复制到桌面上,我在项目中有超过 500 个错误,所有这些都是......

当前上下文中不存在该名称

这是一个例子...

工作.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
}

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

我知道这个错误意味着被引用的控件通常不存在或者不是引用它的类的一部分,但据我所知,这里不是这种情况。

谁能提供一些见解?

VS2012 截图

4

14 回答 14

19

万一有人是初学者,尝试了以上所有方法但仍然无法使项目正常工作。检查您的命名空间。如果您将代码从一个项目复制到另一个项目并且您忘记更改项目的名称空间,那么它也会给您此错误。

希望它可以帮助某人。

于 2014-11-27T08:58:10.130 回答
16

工作.aspx

这是物理文件->CodeFile="Jobs.aspx.cs"

这是处理页面事件的类->Inherits="Members_Jobs"

Jobs.aspx.cs

这是管理页面事件的部分类->public partial class Members_Jobs : System.Web.UI.Page

部分类的另一部分应该是 ->public partial class Members_Jobs这通常是设计器文件。

您不需要部分类,并且可以在 1 个类中声明所有控件,并且没有设计器文件。

编辑27/09/2013 11:37

如果您对此仍有疑问,我会按照 Bharadwaj 的建议进行操作并删除设计器文件。然后,您可以在解决方案资源管理器中右键单击该页面,并且有一个选项,例如“转换为 Web 应用程序”,它将重新生成您的设计器文件

于 2013-09-26T12:03:10.343 回答
6

“该项目在笔记本电脑上运行,但现在已将更新的源代码复制到桌面......”

我做了类似的事情,创建了一个项目的两个版本并在它们之间复制文件。它给了我同样的错误。

我的解决方案是进入项目文件,在那里我发现看起来像这样:

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

现在看起来像这样:

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

当我把它们改回来时,Visual Studio 又高兴起来了。

于 2014-08-28T15:44:25.660 回答
6

从 MSDN 网站:

如果您在循环或 try 或 if 块中声明变量,然后尝试从封闭代码块或单独的代码块访问它,则会经常发生此错误。

所以在块外声明变量。

于 2014-09-17T02:35:07.483 回答
5

当我引用一个 dll 文件时,我在我的主项目中遇到了这个问题。

问题是引用 dll 的主项目的目标框架版本低于 dll。

所以我提高了我的目标框架版本(右键单击项目-> 应用程序-> 目标框架)并且错误消失了。

于 2017-07-06T11:08:53.443 回答
3

我遇到了与元标记类似的问题。在 中designer.cs,控件定义为:

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

我不得不将定义移动到.aspx.cs文件中并定义为:

protected global::System.Web.UI.HtmlControl.HtmlMeta metatag;
于 2013-12-06T17:11:48.230 回答
1

我也遇到了类似的问题,问题是表单位于文件夹中,而.aspx.designer.cs我的命名空间专门引用该目录的文件;这导致错误出现在几个组件中:

El nombre no existe en el contexto actual

在您的情况下,一种可能的解决方案是保留全局指定的文件的命名空间Members_Jobs.aspx.designer.cs,即更改此

namespace stman.Members {

为了这

namespace stman {

这就是帮助我解决问题的原因。

我希望能有所帮助

于 2018-09-18T19:39:14.997 回答
0

我有同样的问题,当我在 myform.aspx.cs 的命名空间末尾添加“.forms”时它解决了。像这样:
命名空间YourProgramName.forms

于 2021-08-27T12:24:59.633 回答
0

当我错误地在母版页的顶部指令前面添加了一些文本时,我也发生了同样的问题,我的项目中包含的所有页面上的所有控件开始显示,在当前上下文中不存在。花了很多时间浏览论坛和自我分析后,我发现错误地添加了文本并删除了,但它并没有解决问题。然后我必须单击每个错误以打开相关页面,以便 VS 可以加载页面并识别它,一旦在 VS 中加载代码,那些特定页面的错误开始消失,因为 VS 识别它。单击每个错误,在 VS 编辑器中加载每个页面对我来说都是诀窍,您只需执行一次,因为稍后它将被 VS 自动识别。我会说这是一个 Visual Studio 故障。

于 2019-03-17T08:08:01.970 回答
0

在我们的例子中,除了将 .csproj projet 文件的 ToolsVersion 从 14.0 更改为 15.0 外,如Dominik Litschauer 所述,我们还必须安装更新版本的 MSBuild,因为编译是由 Jenkins 作业触发的。安装 Visual Studio 2019 的构建工具后,我们得到了 MsBuild 版本 16.0,并且所有新的 C# 功能都编译好了。

于 2019-05-06T16:14:02.803 回答
0

在这些情况下,第一步是尝试build -> clean solution

有时,VS 会从自己的项目输出中混淆自己。

Clean 解决方案删除了​​ VS之前构建的代码。

它不会删除 bin/obj 目录本身,而是删除这些文件夹中的输出文件。

于 2021-11-16T08:16:58.750 回答
0

我通过在我的 Page 指令下使用 Import 指令解决了我的问题。您可能还希望将命名空间添加到 Page 指令的 Inherits 属性中。

由于您的默认命名空间似乎是“stman.Members”,请尝试: <%@ Page Title="" Language="C#" MasterPageFile="~/Members/Members.master" AutoEventWireup="true" CodeFile="Jobs.aspx.cs" Inherits="stman.Members.Members_Jobs" %> <%@ Import Namespace="stman.Members"%>

此外,我想在 aspx.cs 和 aspx 之间传递的数据,我放在命名空间内的静态类中。该静态类可用于在名称空间中移动数据,并且不再有“不在上下文中”错误。

于 2016-03-04T18:10:56.210 回答
0

我也遇到了类似的问题。原因是我在 .aspx 页面而不是设计器页面中完成了更改,因此我收到了上述错误。在设计器页面中创建参考时,我能够构建解决方案。

于 2018-03-26T07:53:54.797 回答
0

我遇到了这个问题,发现用于调试的几个文件共享相同的 CodeFile 和 Inherits 值。将它们更改为唯一解决了我的问题。

于 2021-04-13T20:08:10.093 回答