Подтвердить что ты не робот

Имя не существует в текущем контексте

Итак, я работаю над этим проектом между моим ноутбуком и моим рабочим столом.

Проект работает на ноутбуке, но теперь, скопировав обновленный исходный код на рабочий стол, у меня более 500 ошибок в проекте, все они...

Имя не существует в текущем контексте

Вот один пример...

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
}

Здесь образец файла 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 Screenshot

4b9b3361

Ответ 1

Jobs.aspx

Это файл phyiscal → CodeFile="Jobs.aspx.cs"

Это класс, который обрабатывает события страницы → Inherits="Members_Jobs"

Jobs.aspx.cs

Это класс partial, который управляет событиями страницы → public partial class Members_Jobs : System.Web.UI.Page

Другая часть класса partial должна быть → public partial class Members_Jobs, это обычно файл конструктора.

вам не нужно иметь частичные классы и можете объявлять свои элементы управления в 1 классе и не иметь файл-конструктор.

EDIT 27/09/2013 11:37

Если у вас все еще есть проблемы с этим, я бы сделал, как предложил Bharadwaj и удалил файл дизайнера. Затем вы можете щелкнуть правой кнопкой мыши на странице, в проводнике решений, и есть опция, например "Преобразовать в веб-приложение", которая будет регенерировать файл вашего дизайнера.

Ответ 2

В случае, если кто-то новичок, который пробовал все вышеперечисленное и до сих пор не смог заставить проект работать. Проверьте пространство имен. В случае, когда вы копируете код из одного проекта в другой и вы забываете изменить пространство имен проекта, оно также даст вам эту ошибку.

Надеюсь, что это поможет кому-то.

Ответ 3

"Проект работает на ноутбуке, но теперь скопировал обновленный исходный код на рабочий стол..."

Я сделал что-то подобное, создав две версии проекта и скопировав файлы между ними. Это дало мне ту же ошибку.

Мое решение состояло в том, чтобы войти в файл проекта, где я обнаружил, что это было так:

<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 снова была счастлива.

Ответ 4

Я столкнулся с аналогичной проблемой с метатегом. В designer.cs элемент управления был определен как:

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

Мне пришлось перенести определение в файл .aspx.cs и определить как:

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

Ответ 5

На веб-сайте MSDN:

Эта ошибка часто возникает, если вы объявляете переменную в цикле или попробуйте или заблокируйте, а затем попытайтесь получить к нему доступ из закрывающего кода блок или отдельный блок кода.

Так объявите переменную за пределами блока.

Ответ 6

У меня была эта проблема в моем основном проекте, когда я ссылался на файл dll.

Проблема заключалась в том, что основной проект, который ссылался на dll, был нацелен на более низкую версию рамки, чем на dll.

Итак, я повысил версию целевой платформы (щелкните правой кнопкой мыши проект → Приложение → Целевая структура), и ошибка исчезла.

Ответ 7

Я решил мой, используя директиву Импортировать в соответствии с моей директивой на странице. Вы также можете добавить пространство имен в свой атрибут 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, я помещал внутри статического класса внутри пространства имен. Этот статический класс был доступен для перемещения данных в пространстве имен и больше не имеет ошибки "не в контексте".

Ответ 8

Я также столкнулся с подобной проблемой. Причина была в том, что я сделал изменения на странице .aspx, но не на странице дизайнера, и, следовательно, я получил упомянутую ошибку. Когда ссылка была создана на странице дизайнера, я смог создать решение.

Ответ 9

Я также столкнулся с подобной проблемой, проблема заключалась в том, что форма находилась внутри папки, а файл .aspx.designer.cs имел пространство имен, .aspx.designer.cs конкретно к этому каталогу; что привело к появлению ошибки в нескольких компонентах:

El nombre no existe en el contexto actual

Это в вашем случае возможное решение - оставить строку пространства имен файла Members_Jobs.aspx.designer.cs указанную глобально, т.е. изменить это

namespace stman.Members {

За это

namespace stman {

Это то, что помогло мне решить проблему.

Я надеюсь быть полезным

Ответ 10

Та же проблема произошла со мной, когда я по ошибке добавил текст перед верхней директивой главной страницы, когда все элементы управления по всей странице, включенной в мой проект, начали отображаться, не существует в текущем контексте. Потратив много времени на форум и самоанализ, я нашел ошибочно добавленный текст и удалил, но это не решило проблему. Затем мне пришлось нажимать на каждую ошибку, чтобы открыть связанную страницу, чтобы VS мог загрузить страницу и распознать ее, как только код был загружен в VS, ошибка с этой конкретной страницы начала исчезать, потому что VS распознал ее. щелкнув по каждой ошибке, загрузив каждую страницу в редакторе VS, я добился цели, и вы должны сделать это только один раз, потому что позже она будет автоматически распознана VS. Я бы сказал, что это глюк Visual Studio.

Ответ 11

В нашем случае, помимо изменения ToolsVersion с 14.0 на 15.0 в файле профиля .CSPRJ, как заявил Доминик Литшауэр, нам также пришлось установить обновленную версию MSBuild, поскольку компиляция запускается заданием Jenkins. После установки инструментов сборки для Visual Studio 2019 мы получили версию MsBuild 16.0 и все новые функции С# скомпилированы нормально.