怎样的JavaScript钩到在.net我CustomValidator控件
-
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来设置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;
}
不隶属于 StackOverflow