2009-06-25 7 views
0

나는이 문제를 미리 제기했습니다. here. 나는 다시 같은 유형의 문제에 직면하고있다. 일부 비즈니스 개체의 정보를 표시하는 사용자 정의 컨트롤이 있습니다. 이미 두 페이지에서 사용하고 있습니다. 두 페이지 모두에서 사용자 정의 컨트롤 (주로 asp 레이블)을 객체의 속성에 바인드하는 비즈니스 객체가있는 메소드를 호출합니다. aspx 페이지의 LoadComplete 메서드에서이 메서드를 호출합니다.UserControl은 한 페이지에서 작동하지만 다른 페이지에서는 작동하지 않습니다.

protected void Page_LoadComplete(object sender, EventArgs e) 
    { 
     control.LoadData(bussinessObject); 
    } 

두 페이지 모두에서 정상적으로 작동합니다. 이제 같은 컨트롤을 사용하는 세 번째 페이지가 생겼습니다. 지금은이 새 페이지에서 LoadData 내가 NullReference에게 예외를 받고 있어요 호출 할 때 :

Object reference not set to an instance of an object. 
Description: An unhandled exception occurred during the execution of the 
    current web request. Please review the stack trace for more information 
    about the error and where it originated in the code. 

Exception Details: System.NullReferenceException: Object reference not set 
    to an instance of an object. 

Source Error: 

Line 91:    lblOrgName.Text = obj.Name; 

편집 :! lblOrgName이 NULL :(제발 도와주세요

는 편집 2 : 나는 통해 강화 코드를 포함하는 페이지의 페이지로드 후 Masterpage의 Page_Load가 호출 된 후 문제 컨트롤의 페이지로드가 호출됩니다.이 페이지로드 기능 중 닫는 중괄호 ({})에서 중지 직접 실행 창에 lblOrgName을 입력하면 null이 표시됩니다. :(

그런 다음 사용자 정의 컨트롤이 포함 된 페이지의 LoadComplete에서 컨트롤의 이름을 직접 창에 입력하고 입력했습니다. 그것은 모든 레이블과 그 안에있는 다른 컨트롤을 null로 표시합니다.

편집 3 : 제안

나는 답을 Stendhal하여 UserControl을 보호 생성자를 넣어했습니다

Compiler Error Message: CS0122: 'Controls.OrgInfo.OrgInfo()' is inaccessible 
      due to its protection level. 

:

protected OrgInfo(){ } 

지금이 오류를 받고 있어요 프로젝트의 루트 디렉토리에있는 aspx 페이지와 OrgInfo 컨트롤은 Controls 폴더에 있습니다.

편집 4 : 나는 페이지로드 방법이 아니라 Controls 컬렉션의 수 아아 모든 컨트롤 (주로 라벨)를 만들려고

은 0 (영)입니다!

+0

은 obj null 또는 lblOrgName입니까? – shahkalpesh

답변

2

:

<%@ Register src="~/Controls/OrgInfo.ascx" TagName="OrgInfo" TagPrefix="proj1"/> 

하고 작동!

0

"lblOrgName"컨트롤에 값을 할당하려고 시도했지만 아직 aspx 페이지에 작성/해결되지 않은 것처럼 들립니다.

AutoEventWireup="true" 
+0

예. 페이지 언어 = "C#"AutoEventWireup = "true" – TheVillageIdiot

2

어떻게 당신이 페이지에 UserControl을 배치해야합니까 :

는 다음과 같은 설정이 문제가 영문 페이지의 @page 지시어에 있는지 확인

? 과거에는 이런 일이 일어 났었습니다. 그 이유는 컨트롤이 사용자 컨트롤이 아닌 서버 컨트롤로 실수로 추가 되었기 때문입니다. 대조군의 모든 하위 통제는 절대 착취되지 않았습니다.

당신은에 보호 기본 생성자를 넣어 코드 숨김 사용자 제어하여이를 확인할 수 있습니다

보호을 MyUserControl를() {}

컨트롤이 서버 컨트롤로 인스턴스화 할 수없는 그런 식으로

.내가 페이지에서 행 다음에 넣어

+0

질문을 편집했습니다. 추가 제안을 해주시겠습니까? 나는 이것을 다음과 같이 두었습니다. TheVillageIdiot

+0

web.config (configuration/system.web/pages/controls /)에 매핑이 있습니까? –

+0

예, 저는 부분에 줄을 넣었습니다. TheVillageIdiot

관련 문제