Как подключить JavaScript к моему элементу управления CustomValidator в.Net
Я создал элемент управления 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";
3 ответа
Я ответил на это сам, так как другой ответ не совсем достиг того, что я хотел. Я закончил тем, что использовал.
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";
На самом деле гораздо проще использовать свойство ClientValidationFunction asp:CustomValidator, как показано ниже. Обязательно НЕ указывайте свойство ControlToValidate.
<asp:CustomValidator ClientValidationFunction="MyCustomJSFunction" Text="Required" ForeColor="Red"></asp:CustomValidator>
function MyCustomJSFunction(validator, args) {
args.IsValid = my condition;
}