2013-03-13 4 views
0

이것은 내 문제입니다 : 일부 필드에는 사용자 정의 유효성 검사기가 사용됩니다. 이제 유효성 검사 마크 업을 변경하려고합니다. 지금은 다음과 같습니다. <span id="CreateProfile_EmailValidator">Email is in Incorrect Format</span>.Asp.net 사용자 정의 유효성 검사기 컨트롤

어떻게 든이 마크 업을 변경할 수 있습니까? 예를 들어, <div> 요소를 추가 하시겠습니까?

UPD : 일회성 해결책을 찾지 못했습니다. (MikeSmithDev의 대답을 참조하십시오)

+0

정확히 무엇을 의미합니까? Validator에 클래스 ('CssClass')를 적용 할 수 있습니다. 또한 RegularExpressionValidator는 이메일에 유용합니다. – MikeSmithDev

+0

@MikeSmithDev 이제'CssClass'에 대해 설명 하겠지만,''대신'div'와 다른 html 요소를 사용해야합니다. –

답변

3

.

public class MyCustomValidator : CustomValidator 
{ 
    protected override void Render(HtmlTextWriter writer) 
    { 
     writer.RenderBeginTag("div"); 
     base.Render(writer); 
     writer.RenderEndTag(); 
    } 
} 
2

CustomValidator의 렌더링 방식을 변경하려면 WebControlAdapter을 사용하십시오. RenderBeginTagRenderEndTag 메서드를 재정 의하여 기본 범위 주위에서 div를 렌더링해야합니다.

public class CustomValidatorAdapter : WebControlAdapter 
{ 
    protected override void RenderBeginTag(HtmlTextWriter writer) 
    { 
     writer.RenderBeginTag("div"); 
       base.RenderBeginTag(writer); 
    } 

    protected override void RenderEndTag(HtmlTextWriter writer) 
    { 
       base.RenderEndTag(writer); 
     writer.RenderEndTag(); // this will close div 
    } 
} 

이 어댑터를 응용 프로그램에 연결하려면 두 가지 옵션이 있습니다. 먼저 프로그램 페이지 생성자에 그것을 할 수 있습니다 :

프로젝트에 새 Browser File을 추가

var adapters = Context.Request.Browser.Adapters; 
var customValidatorType = typeof(CustomValidator).AssemblyQualifiedName; 
var adapterType = typeof(CustomValidatorAdapter).AssemblyQualifiedName; 
if (!adapters.Contains(customValidatorType)) 
{ 
    adapters.Add(customValidatorType, adapterType); 
} 

두 번째 옵션은 .browser 파일을 사용하는 것입니다. 이 파일은 App_Browsers 폴더에 있습니다. 그런 다음 선언 내용을 대체 : 당신은 BaseValidator 또는 CustomValidator 클래스에서 상속 Render 메소드를 오버라이드 (override) 한 다음 원하는 마크 업을 생성 할 수 있습니다

<browsers> 
    <browser refID="Default"> 
      <controlAdapters> 
       <adapter controlType="System.Web.UI.WebControls.CustomValidator" 
         adapterType="<your namespace>.CustomValidatorAdapter" /> 
      </controlAdapters> 
    </browser> 
</browsers> 
관련 문제