2008-09-18 6 views
2

직장에서 고객을 구성하기위한 다소 복잡한 페이지 작업. 설정은 다양한 설정 그룹을위한 다양한 "패널"을 포함하는 기본 페이지가 있다는 것입니다.웹 사용자 컨트롤의 속성에 null 값 바인딩

주 테이블에는 전자 메일 주소 필드와 전자 메일 발송 방법을 제어하는 ​​"내보내기"구성이 있습니다. 회사를 선택하고 FormView에 바인딩하는 기본 패널을 만들었습니다. FormView에는 내보내기 세부 사항의 표시/구성을 처리하는 웹 사용자 정의 컨트롤이 있습니다.

웹 사용자 정의 컨트롤에는 처리해야하는 Config를 정의하는 속성이 들어 있으며 Bind()를 사용하여 FormView에서 값을 가져옵니다.

기본적으로 제어는 다음과 같이 사용됩니다

<syn:ExportInfo ID="eiConfigDetails" ExportInfoID='<%# Bind("ExportInfoID") %>' runat="server" /> 

바인딩되는 속성은 코드 숨김에서 다음과 같이 선언 다음 ExportInfoID 내가 null 참조 예외가 널 때마다

public int ExportInfoID  
{ 
    get 
    { 
     return Convert.ToInt32(hfID.Value); 
    } 
    set 
    { 
     try 
     { 
      hfID.Value = value.ToString(); 
     } 
     catch(Exception) 
     { 
      hfID.Value="-1"; 
     } 
    } 
} 

하지만, 키커는 실제로 속성을 설정하려고 시도하기 전에 발생합니다 (또는이 버전에서 발견 될 것입니다).

현재 진행중인 작업을 알고 있거나, 더 중요하게, 그것을 고치는 방법 ...?

답변

0

Bind는 null 값을 int 값으로 변환 할 수 없으므로 ExportInfoID 속성을 설정합니다. 그것이 당신의 코드에 잡히지 않는 이유입니다. 이 속성을 nullable 형식 (int?)으로 만들거나 바인드 논리에서 null을 처리 할 수 ​​있습니다.

는 그래서이

bind receives field to get value from 
bind uses reflection to get the value 
bind attempts to set the ExportInfoID property // boom, error 
0

hfID.Value은 아직 초기화되지 않았으므로 변환 할 수없는 것 같습니다. getter 또는 null 유효성 검사에 null 체크를 추가하여 hfID.Value이 null이 아니고 숫자인지 확인하십시오.

관련 문제