2012-11-27 4 views
0

폼을 완성하기 위해 4 개의 패널을 단계별로 실행하는 마법사와 동일한 기능을하는 멀티 뷰 컨트롤이 있습니다.멀티 뷰 컨트롤 및 expando 속성 관련 문제

각보기에는 여러 입력 컨트롤/유효성 검사기 컨트롤이 있습니다. 재사용을 위해, 이들은 사용자 정의 컨트롤로서 번들링됩니다. 예를 들어 내 전자 메일 사용자 정의 컨트롤에는 레이블, 텍스트 상자, 필수 유효성 검사기 및 정규식 유효성 검사기가있는 패널이 있습니다.

다보기가 모두로드 된 상태에서 현재보기 외부의 컨트롤이 숨겨져 있다는 것을 알고 있습니다.하지만이 문제는 저에게 작은 문제를 일으키고 있으며이를 해결하는 방법에 대한 최선의 제안을 찾고 있습니다.

다음은 시나리오입니다.

패널 3에는 '번호'라는 사용자 정의 컨트롤이 있습니다. 레이블, 텍스트 상자 및 사용자 정의 유효성 검사기가 포함 된 패널이 있습니다.

컨트롤에는 설정할 수있는 속성이 있으며 (일반적으로 포함 된 aspx 페이지에서 컨트롤을 설정 함) 컨트롤이 페이지로드시 채워집니다.

영문 페이지 : 수의

<uc4:Number ID="UC_Number" runat="server" 
    Label="Monthly Take Home Pay" 
    MinValue="1" 
    MaxValue="9999" /> 

를 Page_Load :

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     SetValidation(); 
    } 
} 

내가 가진 문제는 SetValidation 방법입니다.

void SetValidation() 
    { 
     CusVal_ValueLimits.ErrorMessage = GetErrorMessage(); 

     if (MinValue > 0) 
     { 
      ScriptManager.RegisterExpandoAttribute(
       this, 
       CusVal_ValueLimits.ClientID, 
       "MinValue", 
       MinValue.ToString(), 
       false); 
     } 

     if (MaxValue > 0) 
     { 
      ScriptManager.RegisterExpandoAttribute(
       this, 
       CusVal_ValueLimits.ClientID, 
       "MaxValue", 
       MaxValue.ToString(), 
       false); 
     } 
    } 

클라이언트에서 사용자 지정 유효성 검사를 허용하기 위해 2 개의 새로운 expando 특성을 추가했습니다. 속성이 만들어지기는하지만 사용자 정의 컨트롤은 다중 뷰에 의해 숨겨져 있기 때문에 이로 인해 문제가 발생합니다.

.net ajax 코드에서 잘 처리되지 않으며 참조 된 사용자 정의 컨트롤을 사용할 수 없기 때문에 javascript 오류가 발생하여 페이지의 나머지 자바 스크립트가 ar * e에 속하게됩니다.

내가 알아야 할 것은이 두 가지 사용자 컨트롤을 안전하게로드하는 방법입니다. 보기가 표시되거나 내 expando 관련 코드를 변경하여이 문제에 대처할 수 있습니다.

모든 아이디어가 감사하겠습니다.

답변

0

사전 조정 중에 (this.Visible) 사용자 컨트롤이 보이는지 확인하고 확장 된 항목을 호출하는 경우 확인했습니다.