2010-05-21 4 views
1

페이지에서 CompareValidator를 사용하고 모든 BaseValidator 클래스 (및 그 파생어)를 보려는 ControlAdapter (브라우저 파일을 통해)를 추가했습니다. 내 ControlAdapter는 아무 것도하지 않습니다. 현재는 메서드를 재정의하지 않습니다. 유효성 검사기는 id 및 스타일이지만 span 태그는 씁니다. 그 외에는 오류 메시지가없고 자바 스크립트도 없습니다. 어떤 아이디어?ASP.NET 2.0 WebControlAdapters는 검사기 컨트롤에서 사용할 수 없습니까?

답변

1

와우; 너무 빨리 썼다. 대답은 표준 WebControlAdapter가 Render() 메서드를 재정의하는 것입니다.이 메서드는 Validator 처리가 발생하는 곳입니다. 솔루션은 추상 System.Web.UI.Adapters.ControlAdapter를 서브 클래스 화하고 자신의 어댑터를 작성하는 것입니다 (실제로 비어있을 수 있음).

public class ValidatorAdapter : System.Web.UI.Adapters.ControlAdapter { } 
public class FieldError : ValidatorAdapter 
{ 
    protected void RenderBeginTag(HtmlTextWriter writer) 
    { 
     writer.AddAttribute(HtmlTextWriterAttribute.Class, "fieldError"); 
     writer.RenderBeginTag(HtmlTextWriterTag.Div); 
    } 
    protected override void Render(HtmlTextWriter writer) 
    { 
     RenderBeginTag(writer); 
     base.Render(writer); 
     RenderEndTag(writer); 
    } 
    protected void RenderEndTag(HtmlTextWriter writer) 
    { 
     writer.RenderEndTag(); 
    } 
} 

하고, 찾아보기 파일이 추가 :

 <adapter controlType="System.Web.UI.WebControls.BaseValidator" 
      adapterType="UI.ControlAdapters.FieldError" 
      /> 
관련 문제