문제

CustomValidator 컨트롤을 만들었습니다

public class MyValidator :CustomValidator, IScriptControl {}

또한 동등한 클라이언트 스크립트를 만들었습니다. 서버 유효성 검사는 제대로 작동하지만 클라이언트 스크립트를 어떻게 연결합니까?

렌더링 된 JavaScript는 모양입니다

var MyValidator1 = document.all ? document.all["MyValidator1"] : document.getElementById("MyValidator1");
MyValidator1.controltovalidate = "MyField";
MyValidator1.errormessage = "error";
MyValidator1.evaluationfunction = "MyValidatorEvaluateIsValid";

평가 기능의 값을 설정하기 위해 생성 된 JavaScript를 어떻게 무시합니까? 예를 들어

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction";
도움이 되었습니까?

해결책 2

나는 다른 대답이 내가 원하는 것을 정확하게 달성하지 못했기 때문에 이것을 스스로 대답했습니다. 나는 결국 사용했다.

public class MyValidator : BaseValidator, IScriptControl  {

  protected override void AddAttributesToRender(HtmlTextWriter writer) {
    base.AddAttributesToRender(writer);
    Page.ClientScript.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", "MyJavascriptFunction");
  }

}

제어가 생성 될 수 있습니다.

MyValidator1.evaluationfunction = "MyJavascriptFunction";

다른 팁

이와 같이 기본 클래스의 ClientValidationFunction 속성을 설정할 수 있습니다.

base.ClientValidationFunction = "MyCustomJavascriptFunction";

그래서 그것은 이것을 이렇게 렌더링 할 것입니다.

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction";

동일한 속성을 설정하여 컨트롤에서 수행 할 수 있습니다.

편집 : 할 수 있습니다

document.getElementById("<%= ValidatorId %>").evaluationfunction = "MyCustomJavascriptFunction";

실제로 훨씬 쉬운 것은 ASP의 ClientValidationFunction 속성을 사용하는 것입니다. ControlTovalidate 속성을 지정하지 마십시오.

<asp:CustomValidator ClientValidationFunction="MyCustomJSFunction" Text="Required" ForeColor="Red"></asp:CustomValidator>

function MyCustomJSFunction(validator, args) {
    args.IsValid = my condition;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top