현재 컨텍스트에 'controlname'이름이 없습니다.


79

작업중인 웹 응용 프로그램이 있습니다 (VS2005를 사용하는 C #의 ASP.NET2.0). 모든 것이 잘 작동하고 갑자기 오류가 발생합니다.

Error 1 The name 'Label1' does not exist in the current context

페이지의 코드 비하인드에서 컨트롤을 사용할 때마다 43 개의 다른 종류가 있습니다.

이것은 한 페이지에서만 발생합니다. 코드 숨김이 컨트롤을 인식하지 못하는 것과 같습니다. 또 다른 흥미로운 점은 인텔리 센스가 컨트롤을 선택하지 않는다는 것입니다.

솔루션 파일을 정리하고, obj 파일을 삭제하고, 프로젝트에서 파일을 제외하고, 다시 추가하고, VS를 닫고 다시 시작하고, 심지어 내 컴퓨터를 다시 시작하려고 시도했지만 이들 중 어느 것도 작동하지 않았습니다.


2
이에 대한 정답은 여기에있는 답변에 있습니다. stackoverflow.com/a/1981228/168703
JonH

1
또한 aspx 페이지의 이름을 바꾼 후 때때로 designer.cs의 네임 스페이스를 확인하여 namesapce는 단순히 designer.cs에서 제거됩니다.
Ashraf Abusada

다른 .aspx 파일에서 컨트롤에 대한 태그를 복사 한 후에 발생할 수 있습니다. 복사 된 마크 업을 삭제하고 수동으로 컨트롤 마크 업을 작성했는데 오류가 사라졌습니다.
Milind Bankar

답변:


48

@Page 지시문의 파일 이름과 Inherits 속성 뒤에있는 코드를 확인하고 둘 다 일치하는지 확인합니다.


1
그것은 나에게도 속임수를 쓴다! 네임 스페이스가 잘못되었으며 @Page 지시문에서 수정했을 때 오류가 사라졌습니다.
East of Nowhere 2011

1
여기에도 약간만 추가하면됩니다. 정규화 된 클래스 이름이 있는지 확인해야합니다. 어떤 이유로 VS는 "MyNamespace.KioskB"가 필요할 때 내 것을 Inherits = "KioskB"로 변경했습니다. 마크 업을 다른 페이지와 비교하고 네임 스페이스 부분이 사라진 것을 알기 전까지는 제대로 보였습니다.
Kevin

117

나는 이것이 오래된 질문이라는 것을 알고 있지만 비슷한 문제가 있었고 다른 사람에게 도움이 될 수있는 경우 내 솔루션을 게시하고 싶었습니다. 사용 방법을 배우는 동안 문제가 발생했습니다.

  • ASP.NET 3.5
  • 씨#
  • VS2008

AJAX 사용 페이지를 만들려고했습니다 (이에 익숙하지 않은 경우 ScriptManager 개체 사용에 대한 자습서를 참조하십시오). C # 코드를 통해 페이지의 HTML 요소에 액세스하려고했는데 HTML ID 값에 대한 식별자가 "현재 컨텍스트에 존재하지 않습니다"라는 오류가 발생했습니다.

이를 해결하기 위해 다음을 수행해야했습니다.

1. 서버에서 실행

C # 코드의 변수로 HTML 요소에 액세스하려면 aspx 파일의 HTML 요소 태그에 다음 값을 배치해야합니다.

runat="server"

Visual Studio IDE의 도구 상자에있는 일부 개체는 페이지에 추가 될 때이 값을 자동으로 포함하지 않습니다.

2. 자동 생성 된 C # 파일을 다시 생성합니다.

  • 솔루션 탐색기의 aspx 파일 아래에 * .aspx.cs 및 * .aspx.designer.cs 파일이 있어야합니다. 디자이너 파일이 자동 생성됩니다.
  • 기존 * .aspx.designer.cs 파일을 삭제합니다. 디자이너 파일 만 삭제해야 합니다. 다른 하나는 페이지에 대한 C # 코드가 포함되어 있으므로 삭제하지 마십시오.
  • 상위 aspx 파일을 마우스 오른쪽 버튼으로 클릭합니다. 팝업 메뉴에서 웹 응용 프로그램으로 변환을 선택합니다 .

이제 C # 코드 파일에서 요소에 액세스 할 수 있습니다.


2
오른쪽 클릭 "웹 응용 프로그램으로 변환"옵션을 폴더 및 프로젝트에서도 사용할 수 있습니다.
Dana Benson

9
옵션 번호 # 2는 오늘이 문제를 해결하는 데있어 완벽한 답이었습니다!
MikeScott8

19
참고로 Visual Studio 2013에서 "웹 응용 프로그램으로 변환"옵션이 프로젝트 메뉴로 이동했습니다. stackoverflow.com/questions/19561982/…
Mark Nugent

1
삭제하고 나를 위해 일한 디자이너 파일을 다시 - 감사
CJM

3
이것은 프로젝트 메뉴를 사용하여 작동했습니다. 참고 : .aspx 파일의 <% @ Page 태그는 'Codefile'이 아닌 'Codebehind'를 사용해야합니다
KR

34

동일한 코드 숨김 파일을 참조하는 다른 페이지 (예 : 복사하여 붙여 넣은 이전 페이지)를 제외합니다.


또는 'Label1'요소를 다른 페이지에 복사하십시오.
mathijsuitmegen 2010-07-27

14

나는 같은 문제가 있었다. 내 프로젝트에 "MyPage.aspx"와 "Copy of MyPage.aspx"가 모두있는 것으로 나타났습니다.


3

또한 실수로 다른 파일과 동일한 (부분) 클래스를 상속하거나 정의하려는 파일이 없는지 확인하십시오. 이러한 파일은 오류가 실제로 발생한 파일과 관련이없는 것처럼 보일 수 있습니다.


1

WPF 오류를 제외하고는 이와 동일한 오류가 발생했습니다. 나는 프로젝트를 재정렬하고 다음과 같이 정의 된 컨트롤을 가지고 있었다.

<local:CustomControl Name="Custom" /> 

내 코드에서 Custom.Blah를 사용해 보았지만 오류가 발생했습니다.

The name 'Custom' does not exist in the current context

나를 위해 트릭은 Xaml의 컨트롤을 다음과 같이 변경하는 것입니다.

<local:CustomControl x:Name="Custom" />

이것이 누군가를 돕기를 바랍니다!


1

데이터 컨텍스트를 변경 한 후에도 동일한 오류가 발생합니다. 그러나 나는 내가 익숙하지 않은 것을 만난다. 내 파일을 수동으로 게시하는 데 익숙해졌습니다. 일반적으로 그렇게하면 게시 폴더에 App_Code 폴더가 나타나지 않습니다. Bu i는 웹 서버에 대한 도움으로 직접 게시하는 VS 12 게시를 사용하기 시작했습니다. 그런 다음 미리 컴파일 된 응용 프로그램에 대한 오류가 발생합니다. 그런 다음 작동 한 app_code 폴더를 삭제합니다. 그러나 그것은 당신이 얻는 데이터 컨텍스트 오류를주었습니다. 그래서 방금 모든 파일을 삭제하고 파일 제한없이 게시를 다시 실행하면 (모든 폴더 및 파일이 게시됩니다) 매력처럼 작동했습니다.


1

동일한 문제가 발생했습니다. 두 속성 사이에 공백이 없었습니다. "

AutoGenerateColumns="False"DataKeyNames="ProductID"

대신에

AutoGenerateColumns="False" DataKeyNames="ProductID"

1

내 프로젝트에서 현재 파일을 백업하고 (그래서 코드가 남아 있으므로) 현재 aspx (및 하위 페이지)를 삭제하고 새 aspx를 만들고 백업 파일의 내용을 새 파일에 복사하여이 문제를 해결했습니다.



0

위에 제공된 솔루션 옵션 # 2는 웹 aspx 응용 프로그램이 아닌 Windows Forms 응용 프로그램에 대해 작동합니다. 웹 응용 프로그램에서 비슷한 오류가 발생했습니다. 같은 이름의 사용자 컨트롤이있는 파일을 삭제하여이 문제를 해결했습니다.이 aspx 파일은 실제로 백업 파일이며 프로세스의 어느 곳에서도 참조되지 않았지만 여전히 오류가 발생했습니다. 백업 파일에 등록 된 사용자 정의 컨트롤의 이름은 프로세스 흐름에서 참조 된 aspx 파일에서 정확히 동일하게 명명되었습니다. 그래서 백업 파일을 삭제하고 솔루션을 구축하고 성공했습니다.

이것이 비슷한 시나리오에서 도움이되기를 바랍니다.

비자 야 락스 미.


0

컨트롤에 clientidmode = "Static"속성이 포함되도록 Visual Studio 2010 프로젝트에서 aspx 파일을 다시 생성하려고했기 때문에 동일한 문제가 발생했습니다. 이것이 제거되면 해결되었습니다.


0

DataList에서 변환 한 후 Repeater로 조정할 때 비슷한 문제가 발생했습니다.

문제는 불필요한 속성을 삭제할 때 실수로 2 개의 속성을 통합 한 것입니다.

<asp:Repeater runat="server" ID="ClientsRP"DataSourceID="ClientsDS">
    .
    .
    .
</asp:Repeater>

그리고 이것은 디자인 파일에서 리피터가 생성되는 것을 막았습니다.


0

동일한 오류 메시지가 표시되었습니다. 내 코드는 오류가 없었고 완벽하게 작동 한 다음 돌아가서 내 버튼 중 하나의 이름을 변경하기로 결정했는데 갑자기 현재 컨텍스트에 컨트롤이 존재하지 않는다는 파란색 구불 구불 한 밑줄과 함께 컴파일 오류가 발생합니다.

문제가 내 aspx.cs 클래스로 만든 백업 파일과 관련되어 있기 때문에 Visual Studio가 멍청한 것으로 나타났습니다. 나는 그것들을 삭제했고 오류는 사라졌습니다.


0

나는이 같은 문제에 부딪쳤다. 분명히 BLL의 클래스를 .aspx / .aspx.cs 파일 중 하나와 동일한 이름으로 호출해서는 안됩니다. 나는 그들이 같은 범위에 있지 않을 것이라고 생각했지만 Visual Studio의 내부 작업을 너무 많이 망쳤습니다. 그런 유형의 오류가 발생하면이 작업을 수행하지 못하도록 할 수있는 것이 없다는 것에 조금 놀랐습니다. 어쨌든 .aspx / .aspx.cs 파일을 삭제하고 프로젝트를 다시 빌드하십시오. 그런 다음 다른 이름으로 다시 가져 오십시오. 코드를 모두 다시 입력하지 않으려면 코드를 다른 편집기에 복사 / 붙여 넣기 할 수 있습니다.


0

필자의 경우 웹 양식을 만들 때 WebForm1.aspx와 각 이름 (WebForm1)으로 이름이 지정되었습니다. 편지, 다른 이름으로 이름을 바꿨습니다. 거의 모든 위치에서 수동으로 이름을 변경했지만 디자이너 파일의 한 곳에서 여전히 'WebForm1'으로 표시되었습니다.

나도 그것을 변경 하고이 오류를 제거했습니다.


0

1) "filename.aspx"페이지의 <% @ Page CodeFile = "filename.aspx.cs"%>에서 CodeFile 속성을 확인합니다. 코드 숨김 파일 이름과이 속성 이름은 동일해야합니다.

2) 코드에서 runat = "server"를 놓칠 수 있습니다.


0

필자의 경우 실제 오류를 찾기 위해 417 "controlname not found"오류를 검색해야했습니다. DLL을 교체했지만 web.config에서 버전 번호를 업데이트하지 않았습니다. 다른 모든 오류가 저절로 해결 된 후 3 분 후에이를 수정하고 성공적으로 빌드했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.