2011-03-24 5 views
1

은 내가 로그인 컨트롤에 액세스 할 ASP.NET 응용 프로그램과 마스터 페이지 C# 코드에서 일하고 있어요, 그래서 나는 다음과 같은 코드를 가지고 : 나는 예외를 얻을asp.net 로그인 제어 : 무엇이 잘못 되었나요?

Login login = new Login(); 
login = this.Master.FindControl("login") as Login; 

을 그러나 "개체 참조가 설정되지 객체의 인스턴스에 "이 라인

login = this.Master.FindControl("login") as Login; 

이 실행됩니다.

내가 잘못 될 수 있는지 볼 수 없습니다 ...

감사합니다. 위에서 언급 한 코드는 마스터 페이지에있는 경우

+0

로그인 컨트롤은 어디에 있습니까? –

+0

동일한 마스터 페이지에 있습니다. – GoG

+0

로그인 컨트롤이 LoginView 안에 있습니까? –

답변

0

, 다음이 일을 왜

이유는 현재 때문에

login = this.FindControl("login") as Login; 
입니다

예를 들어

... 코드의 마스터 부분을 제거하려고 마스터 페이지는 다른 마스터 페이지에 포함되지 않습니다. 따라서 마스터의 마스터 페이지 (예 : this.Master.FindControl())에 액세스 할 때 "객체가 설정되지 않았습니다"라는 오류가 표시됩니다.

궁금한 점이 있다면, 이름으로 컨트롤에 액세스 할 수 없습니까?

+0

고맙습니다. 내 문제가 해결되었습니다. 그리고 귀하의 질문에 - 예, 나도 이상했다, 나는 그것만이 ID에 의해 컨트롤에 액세스 할 수 없습니다, 그래서 책에 대한 답변을 검색했습니다. 그물과 컨트롤이 방법으로 액세스 할 수있는 것으로 나타났습니다 마스터 페이지 ... – GoG

0

ID 컨트롤 요소로 직접 로그인 컨트롤을 참조 할 수 있어야합니다. 마크 업에서

:에서

<asp:Login runat="server" ID="MainLogin" ....... /> 

코드 숨김 :

내가 제대로 질문을 읽으면
MainLogin.Visible = false; 
+0

Page.Master.FindControl을 사용하지 않겠습니까 ?? – CrazyCoderz

+0

왜 하시겠습니까? 내가 여기서 뭔가를 놓치고 있니? –

+0

컨트롤은 마스터 페이지 코드 숨김 클래스의 ID로만 액세스 할 수 있으므로 Page.FindControl ("") – GoG

1

, 당신은 마스터 페이지가와라는 이름의 제어를 찾을 수의 FindControl를 사용하려고 그 페이지의 페이지에 접속하십시오. 그렇다면, 당신은이 일을해야한다 :이 때문에

login = this.FindControl("login") as Login; 

:.

login = this.Master.FindControl("login") as Login; 

현재 마스터 페이지에 중첩 된 마스터 페이지에서 컨트롤을 찾는 것

즉, 중첩 된 마스터 페이지 (예 : Site.Master)가 있고 중첩 된 자식 MasterPage (Section.Master)가있는 경우 마지막 줄의 코드가 작동합니다. 로그인 컨트롤이 Site.Master에 있으면 코드 스 니펫 섹션에 있었어. 마스터.

(잘하면 그 의미가됩니다.)

+0

고맙습니다. 이제 상황이 나에게 분명합니다. – GoG

관련 문제