DateValidator 컨트롤을 작성하여 날짜에 대한 모든 유형의 유효성 검사기로 작동합니다.ASP.NET 사용자 지정 서버 컨트롤 빌드 유효성 검사기
클라이언트 측에서 날짜 비교를 위해 Required 유효성 검사기, 최소/최대 유효성 검사기 및 범위 검사기로 작동합니다.
전체적으로 필자는 ASPX 페이지에서 다음과 같이 쓰고 작동합니다.
어떤 이유로 ASCX 사용자 정의 컨트롤에 추가하여 템플릿으로 사용할 때 필요한 <span>
태그를 렌더링하지 않으므로 유효성 검사를 계속하기 전에 컨트롤이 있는지 확인하기 위해 JavaScript null 참조가 생성됩니다.
내 클래스는 BaseValidator
을 상속하므로 출력을 수정할 필요가 없으므로 override RenderChildControls
이 아닙니다. 내 사용자 정의 javascript를 추가하려면 컨트롤에 RegisterExpandoAttributes
에 OnPreRender
메서드를 사용합니다. 그러나 컨트롤 (span 태그)이 렌더링되지 않으므로 ASCX에서이를 실행할 수 없습니다.
누구에게도이 문제가 발생 했습니까? 그렇다면 해결 방법은 무엇입니까?
편집 :
확인, 3 개의 다른 시간 후, 나는이없는 매우 중요한 선을 발견했습니다: ASPX 페이지 내에서 실행하면, 이것은 HTML에 나타납니다 :
<script type="text/javascript">
//<![CDATA[
var Page_ValidationSummaries = new Array(document.getElementById("cal"));
var Page_Validators = new Array(document.getElementById("valTest"));
//]]>
</script>
그러나 때 ASPX에 ASCX 사용자 컨트롤에 : 당신이 볼 수 있듯이
<script type="text/javascript">
//<![CDATA[
var Page_ValidationSummaries = new Array(document.getElementById("uc1_cal"));
//]]>
</script>
만 유효성 검사 요약 인식되고 있으며 내 직접 CustomValidator 클래스에서 상속하지 BaseValidator. 내가 왜 문제를 해결할 수 있는지 알아낼 수 있다면. 실망. 당신이 템플릿를 사용하는 경우 InstantiateIn() 메서드를 호출
필요한 span 태그가 생성 된 코드 스 니펫을 추가 할 수 있습니까? – David
그게 내가 말하는거야. BaseValidator는 SPAN 태그의 렌더링을 처리합니다. 합성 컨트롤을 만들 때 RenderChildControls를 일반처럼 재정의 할 필요가 없습니다. SPAN 태그는 기본값으로 렌더링되므로 출력 HTML을 수정할 필요가 없습니다. – Jonathan