[英]Name does not exist in the current context
所以,我正在我的笔记本电脑和台式机之间进行这个项目。
该项目在笔记本电脑上工作,但现在将更新的源代码复制到桌面上,我在项目中有超过 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;
}
}
我知道这个错误意味着被引用的控件通常不存在或者不是引用它的 class 的一部分,但据我所知,情况并非如此。
谁能提供一些见解?
以防万一有人尝试了上述所有方法但仍然无法使项目正常工作。 检查您的命名空间。 如果您将代码从一个项目复制到另一个项目,而您忘记更改项目的命名空间,那么它也会给您这个错误。
希望它可以帮助某人。
工作.aspx
这是物理文件 -> CodeFile="Jobs.aspx.cs"
这是处理页面事件的类 -> Inherits="Members_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 应用程序”,它将重新生成您的设计器文件
“该项目在笔记本电脑上运行,但现在已将更新的源代码复制到桌面上......”
我做了类似的事情,创建了一个项目的两个版本并在它们之间复制文件。 它给了我同样的错误。
我的解决方案是进入项目文件,在那里我发现看起来像这样:
<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 又高兴起来了。
从 MSDN 网站:
如果您在循环或 try 或 if 块中声明变量,然后尝试从封闭的代码块或单独的代码块访问它,则经常发生此错误。
所以在块外声明变量。
当我引用一个 dll 文件时,我在我的主项目中遇到了这个问题。
问题在于,引用 dll 的主项目的目标框架版本低于 dll。
所以我提高了我的目标框架版本(右键单击项目 -> 应用程序 -> 目标框架),错误消失了。
我遇到了与元标记类似的问题。 在designer.cs
,控件定义为:
protected global::System.Web.UI.HtmlControl.HtmlGenericControl metatag;
我不得不将定义移动到.aspx.cs
文件并定义为:
protected global::System.Web.UI.HtmlControl.HtmlMeta metatag;
我也遇到了类似的问题,问题是表单在一个文件夹中,而文件.aspx.designer.cs
我有专门引用该目录的命名空间; 这导致错误出现在几个组件中:
El nombre no existe en el contexto actual
这在您的情况下,可能的解决方案是保留全局指定的Members_Jobs.aspx.designer.cs
文件的命名空间行,即更改此
namespace stman.Members {
为此
namespace stman {
这就是帮助我解决问题的原因。
我希望能有所帮助
我通过在我的页面指令下使用导入指令解决了我的问题。 您可能还想将命名空间添加到 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 之间传递的数据,我放在命名空间内的静态类中。 该静态类可用于在名称空间中移动数据,并且不再出现“不在上下文中”错误。
我也遇到了类似的问题。 原因是我在 .aspx 页面而不是设计器页面中完成了更改,因此我得到了提到的错误。 在设计器页面中创建参考时,我能够构建解决方案。
同样的问题发生在我身上,当我错误地在母版页的顶部指令前面添加了一些文本时,我的项目中包含的所有页面上的所有控件开始显示,在当前上下文中不存在。 在论坛上花了很多时间和自我分析后,我发现错误添加的文本并删除了但并没有解决问题。 然后我必须点击每个错误来打开相关的页面,以便 VS 可以加载页面并识别它,一旦代码在 VS 中加载,来自那些特定页面的错误开始消失,因为 VS 识别了它。 单击每个错误,在 VS 编辑器中加载每个页面对我来说都是成功的,你只需要做一次,因为稍后它会被 VS 自动识别。 我会说这是一个 Visual Studio 故障。
在我们的例子中,除了将 .csproj projet 文件上的 ToolsVersion 从 14.0 更改为 15.0 之外,如Dominik Litschauer 所述,我们还必须安装更新版本的 MSBuild,因为编译是由 Jenkins 作业触发的。 安装 Visual Studio 2019 的构建工具后,我们获得了 MsBuild 16.0 版,并且所有新的 C# 功能都可以正常编译。
我遇到了这个问题,发现用于调试的几个文件共享相同的 CodeFile 和 Inherits 值。 将它们更改为唯一解决了我的问题。
我遇到了同样的问题,当我在 myform.aspx.cs 的命名空间末尾添加“.forms”时它解决了。 像这样:
命名空间 YourProgramName.forms
在这些情况下,第一步是尝试build -> clean solution
有时,VS 会将自己与自己的项目输出混淆。
Clean 解决方案删除了 VS之前构建的代码。
它不会删除 bin/obj 目录本身,而是删除这些文件夹中的输出文件。
就我而言,不知何故,我的主项目的 *.csproj 文件丢失了对它所依赖的辅助项目的引用,它可能发生在 Visual Studio 2022 的导入阶段(来自 VS 2017)。 我检查了 *.csproj 文件的备份副本,并且缺少一个完整的标签。 我从备份中手动复制了它,错误消失了。
<ItemGroup>
<ProjectReference Include="..\projectName\projectName.csproj">
<Project>{cf9ab6e2-8e15-4915-820d-2d0d8f365cbf}</Project>
<Name>ProjectName</Name>
</ProjectReference>
</ItemGroup>
我也面临同样的问题,项目显示出许多错误。 我从我的同事那里复制了一些造成问题的 dll 并将它们复制到另一个文件夹中,然后从我的项目中删除那些 dll 文件并从新位置再次添加它们的引用,它解决了问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.