我已经创建了一个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的值? E.g。

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属性:的CustomValidator像的下方。一定不要指定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