.NET의 CustomValidator Control에 JavaScript를 연결하는 방법
-
16-09-2019 - |
문제
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;
}
제휴하지 않습니다 StackOverflow