Pergunta

Eu criei um controle CustomValidator

public class MyValidator :CustomValidator, IScriptControl {}

e também criou o script de cliente equivalentes. A validação do servidor funciona bem, porém como faço para ligar o meu script de cliente?

O javascript olhares prestados como

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

Como faço para substituir o javascript gerado para definir o valor de evaluationfunction? Por exemplo.

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction";
Foi útil?

Solução 2

Eu respondi isso mesmo como a outra resposta não chegou a atingir exatamente o que eu queria. Acabei usando.

public class MyValidator : BaseValidator, IScriptControl  {

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

}

O que fará com que o controle para gerar:

MyValidator1.evaluationfunction = "MyJavascriptFunction";

Outras dicas

Você pode definir a propriedade ClientValidationFunction da classe base como este -

base.ClientValidationFunction = "MyCustomJavascriptFunction";

Assim, ele irá torná-lo assim -

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction";

Você pode fazê-lo a partir do controle também definindo a mesma propriedade.

EDIT: Você pode fazer

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

Na verdade muito mais fácil é usar a propriedade ClientValidationFunction do asp: CustomValidator como abaixo. Não se esqueça de especificar uma propriedade ControlToValidate.

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

function MyCustomJSFunction(validator, args) {
    args.IsValid = my condition;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top