0

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 をオーバーライドして、evaluationfunction の値を設定するにはどうすればよいですか? 例えば

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction";
4

3 に答える 3

1

他の答えは私が望んでいたことを正確に達成しなかったので、私はこれに自分で答えました。使ってしまいました。

public class MyValidator : BaseValidator, IScriptControl  {

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

}

これにより、コントロールが次のように生成されます。

MyValidator1.evaluationfunction = "MyJavascriptFunction";
于 2009-04-27T15:56:39.410 に答える
1

次のように、基本クラスの ClientValidationFunction プロパティを設定できます-

base.ClientValidationFunction = "MyCustomJavascriptFunction";

したがって、次のようにレンダリングされます-

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction";

同じプロパティを設定することで、コントロールからも実行できます。

編集:できる

document.getElementById("<%= ValidatorId %>").evaluationfunction = "MyCustomJavascriptFunction";
于 2009-04-27T10:33:46.037 に答える
1

実際には、以下のように asp:CustomValidator の ClientValidationFunction プロパティを使用する方がはるかに簡単です。ControlToValidate プロパティを指定しないでください。

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

function MyCustomJSFunction(validator, args) {
    args.IsValid = my condition;
}
于 2016-05-11T00:14:16.197 に答える