'controlname' 이름이 현재 컨텍스트에 없습니다.
작업 중인 웹 응용 프로그램이 있습니다(ASP.NET 2.0과 C#, Visual Studio 2005 사용).모든 것이 정상적으로 작동하고 있었는데 갑자기 오류가 발생했습니다.
오류 1 'Label1' 이름이 현재 컨텍스트에 없습니다.
페이지 뒤에 있는 내 코드에서 컨트롤을 사용할 때마다 43개의 다른 종류.
이는 한 페이지에 대해서만 발생합니다.페이지 뒤의 코드가 컨트롤을 인식하지 못하는 것과 같습니다.또 다른 흥미로운 점은 IntelliSense가 어떤 제어도 받지 않는다는 것입니다.
솔루션 파일을 정리하고, obj 파일을 삭제하고, 프로젝트에서 파일을 제외한 다음 다시 추가하고, Visual Studio를 닫고 다시 시작하고, 컴퓨터를 다시 시작하려고 했지만, 이 중 어떤 것도 작동하지 않았습니다.
이것이 오래된 질문이라는 것을 알지만, 저도 비슷한 문제가 있어서 다른 사람에게 도움이 될 수 있는 경우에 대비하여 제 솔루션을 게시하고 싶었습니다.사용법을 배우는 동안 문제가 발생했습니다.
- ASP.NET 3.5
- C#
- VS2008
AJAX 지원 페이지를 만들려고 했습니다(이것에 익숙하지 않은 경우 ScriptManager 개체 사용에 대한 튜토리얼을 살펴보십시오).C# 코드를 통해 페이지의 HTML 요소에 액세스하려고 했는데 "현재 컨텍스트에 HTML ID 값의 식별자가 없습니다."라는 오류가 발생했습니다.
그것을 해결하기 위해, 저는 다음과 같은 일을 해야 했습니다.
서버에서 실행
C# 코드의 변수로 HTML 요소에 액세스하려면 aspx 파일의 HTML 요소 태그에 다음 값을 입력해야 합니다.
runat="server"
Visual Studio IDE의 도구 상자에 있는 일부 개체는 페이지에 추가할 때 이 값을 자동으로 포함하지 않습니다.
자동 생성된 C# 파일을 재생성합니다.
- 솔루션 탐색기의 aspx 파일 아래에 *.aspx.cs 및 *.aspx.designer.cs 이라는 두 개의 파일이 있어야 합니다.디자이너 파일이 자동으로 생성됩니다.
- 기존 *.aspx.designer.cs 파일을 삭제합니다.디자이너 파일만 삭제해야 합니다.다른 하나는 페이지에 대한 C# 코드가 포함되어 있으므로 삭제하지 마십시오.
- 상위 aspx 파일 또는 프로젝트 메뉴를 마우스 오른쪽 버튼으로 클릭합니다.팝업 메뉴에서 웹 응용 프로그램으로 변환을 선택합니다.
이제 C# 코드 파일에서 요소에 액세스할 수 있습니다.
@Page 지시문에서 파일 이름 및 상속 속성 뒤에 있는 코드를 확인하고 둘 다 일치하는지 확인합니다.
복사하여 붙여넣은 이전 페이지와 같이 동일한 코드 뒤에 있는 파일을 참조하는 다른 페이지는 제외합니다.
저도 같은 문제가 있었습니다.프로젝트에 "MyPage.aspx"와 "Copy of MyPage.aspx"가 모두 포함되어 있었습니다.
또한 실수로 다른 파일과 동일한 (부분) 클래스를 상속하거나 정의하려는 파일이 없는지 확인합니다.이러한 파일은 오류가 실제로 발생한 파일과 관련이 없는 것처럼 보일 수 있습니다!
WPF 오류를 제외하고는 동일한 오류가 발생했습니다.프로젝트를 재조정하고 다음과 같이 정의된 제어권을 가지고 있었습니다.
<local:CustomControl Name="Custom" />
뒤에 있는 내 코드에서 나는 커스텀을 사용해 보았습니다.이런, 하지만 오류가 있어요.
The name 'Custom' does not exist in the current context
제가 무슨 속임수를 썼는지는 Xaml에서 제 통제력을 다음과 같이 바꾼 것입니다.
<local:CustomControl x:Name="Custom" />
이것이 누군가에게 도움이 되기를 바랍니다!
데이터 컨텍스트를 변경한 후에도 동일한 오류가 발생합니다.하지만 저는 익숙하지 않은 것을 마주칩니다.수동으로 파일을 게시하는 데 익숙합니다.일반적으로 App_Code 폴더가 게시 폴더에 나타나지 않습니다.Bui는 당신의 도움으로 웹 서버에 직접 게시하는 VS 12 게시를 사용하기 시작했습니다.그리고 미리 컴파일된 애플리케이션에 대한 오류가 발생합니다.그런 다음 작동한 app_code 폴더를 삭제합니다.하지만 데이터 컨텍스트 오류가 발생했습니다.그래서 저는 모든 파일을 삭제하고 파일 제한 없이 다시 게시를 실행했습니다(모든 폴더와 파일이 게시됩니다). 그러면 매력적으로 작동했습니다.
저도 같은 문제가 있었습니다. 제 문제는 두 속성 사이에 공백이 없다는 것이었습니다."
AutoGenerateColumns="False"DataKeyNames="ProductID"
대신에
AutoGenerateColumns="False" DataKeyNames="ProductID"
프로젝트에서 현재 파일(코드가 남아 있음)을 백업하고, 현재 asx(및 하위 페이지)를 삭제하고, 새 파일을 만들고, 백업 파일의 내용을 새 파일로 복사하여 이 문제를 해결했습니다.
이 오류는 종종 당신이 놓쳤을 때 발생합니다.runat="server"
.
visual studio 2010 프로젝트에서 aspx 파일을 재생성하려고 할 때부터 동일한 문제가 발생하여 컨트롤에 clientidmode="Static" 속성이 있었습니다.이것을 제거하면 해결됩니다.
데이터 목록에서 리피터를 변환한 후에 리피터로 수정할 때도 비슷한 문제가 있었습니다.
문제는 제가 불필요한 속성을 삭제할 때 실수로 2개의 속성을 통합했다는 것입니다.
<asp:Repeater runat="server" ID="ClientsRP"DataSourceID="ClientsDS">
.
.
.
</asp:Repeater>
그리고 이것은 디자인 파일에 리피터가 생성되는 것을 막았습니다.
저도 같은 오류 메시지를 받았습니다.내 코드는 오류가 없었고 완벽하게 작동하다가 다시 돌아가서 버튼 중 하나의 이름을 바꾸기로 결정했는데 갑자기 컨트롤이 현재 컨텍스트에 존재하지 않는다는 파란색의 꼬불꼬불한 밑줄과 함께 컴파일 오류가 발생합니다.
Visual Studio는 제가 만든 aspx.cs 클래스의 백업 파일과 관련된 문제였기 때문에 멍청했습니다.저는 그것들을 삭제했고 오류가 사라졌습니다.
제 경우 웹 양식을 만들 때 이름은 WebForm1.aspx 및 각 이름(WebForm1)으로 지정되었습니다.편지, 다른 이름으로 바꿨습니다.거의 모든 곳에서 수동으로 이름을 바꿨지만 디자이너 파일의 한 곳에서는 여전히 'WebForm1'로 표시되어 있었습니다.
저도 그것을 변경하여 이 오류를 제거했습니다.
"code.aspx" 페이지의 <%@Page CodeFile="filename.aspx.cs " %>에서 CodeFile 속성을 확인하십시오. 파일 이름 뒤에 있는 코드와 이 속성 이름은 같아야 합니다.
코드에서 runat="server"를 놓칠 수 있습니다.
이 경우 실제 오류를 찾기 위해 417개의 "controlname not found" 오류를 검색해야 했습니다.DLL을 교체했지만 web.config에서 버전 번호를 업데이트하지 않았습니다.이 문제를 해결하고 성공적으로 구축했습니다. 그로부터 3분 후에 다른 모든 오류가 해결되었습니다.
위에서 제공된 솔루션 옵션 #2는 webaspx 응용 프로그램이 아닌 Windows 양식 응용 프로그램에 적합합니다.웹 애플리케이션에서 유사한 오류가 발생했습니다. 동일한 이름의 사용자 컨트롤이 있는 파일을 삭제하여 해결했습니다. 이 aspx 파일은 실제로 백업 파일이며 프로세스의 어느 곳에서도 참조되지 않았습니다.그러나 백업 파일에 등록된 사용자 제어 이름이 프로세스 흐름에서 참조된 aspx 파일에서 정확히 동일한 이름으로 지정되었기 때문에 오류가 발생했습니다.그래서 백업 파일을 삭제하고 솔루션을 구축했습니다. 빌드에 성공했습니다.
저는 같은 문제에 부딪혔습니다.DLL의 클래스를 .aspx/.aspx.cs 파일 중 하나와 동일한 이름으로 호출하면 안 됩니다.같은 범위가 아닐 거라 생각했는데 Visual Studio 내부 작업을 너무 많이 망쳤습니다.이러한 유형의 오류가 발생할 경우 이를 방지할 수 있는 방법이 없다는 것이 약간 놀랍습니다.어쨌든 .aspx/.aspx.cs 파일을 삭제하고 프로젝트를 다시 빌드하십시오.그런 다음 다른 이름으로 다시 데려오십시오.코드를 모두 다시 입력하지 않으려면 다른 편집기에 코드를 복사하거나 붙여넣을 수 있습니다.
언급URL : https://stackoverflow.com/questions/706603/the-name-controlname-does-not-exist-in-the-current-context
'programing' 카테고리의 다른 글
SQL Server - 현재 사용자 이름 (0) | 2023.06.23 |
---|---|
구성 요소는 Angular에서 두 모듈 선언의 일부입니다. (0) | 2023.06.23 |
모든 풀에서 모든 것을 덮어쓰도록 깃 풀을 강제하려면 어떻게 해야 합니까? (0) | 2023.06.23 |
서비스 작업자는 웹 앱 매니페스트의 사전이어야 합니다. (0) | 2023.06.18 |
MVVM Light SimpleIoc을 사용하는 방법은 무엇입니까? (0) | 2023.06.18 |