【问题标题】:How do I hook up javascript to my CustomValidator control in .Net如何在 .Net 中将 javascript 连接到我的 CustomValidator 控件
【发布时间】:2009-04-27 09:39:27
【问题描述】:

我创建了一个 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";

【问题讨论】:

  • 是的。您可以看到更新后的答案。

标签: asp.net javascript custom-validators


【解决方案1】:

你可以像这样设置基类的ClientValidationFunction属性——

base.ClientValidationFunction = "MyCustomJavascriptFunction";

所以,它会像这样渲染它 -

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction";

您也可以通过设置相同的属性从控件中执行此操作。

编辑:你可以做

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

【讨论】:

  • 这样做会增加一行 MyValidator1.clientvalidationfunction = MycustomJavascriptFunction"; 有没有办法设置 MyValidator1.evaluationfunction?
【解决方案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";

【讨论】:

  • 我试过了,但是 ASP.Net 抱怨这个属性已经被添加了。有什么想法吗?
【解决方案3】:

实际上更容易使用 asp:CustomValidator 的 ClientValidationFunction 属性,如下所示。确保不要指定 ControlToValidate 属性。

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

function MyCustomJSFunction(validator, args) {
    args.IsValid = my condition;
}

【讨论】:

    猜你喜欢
    • 2012-04-22
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    相关资源
    最近更新 更多