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