Как подключить 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";

person David Glenn    schedule 27.04.2009    source источник
comment
да. Вы можете увидеть обновленный ответ.   -  person Kirtan    schedule 27.04.2009


Ответы (3)


Вы можете установить свойство ClientValidationFunction базового класса следующим образом:

base.ClientValidationFunction = "MyCustomJavascriptFunction";

Итак, он будет отображать это так -

MyValidator1.evaluationfunction = "MyCustomJavascriptFunction";

Вы также можете сделать это из элемента управления, установив то же свойство.

РЕДАКТИРОВАТЬ: вы можете сделать

document.getElementById("<%= ValidatorId %>").evaluationfunction = "MyCustomJavascriptFunction";
person Kirtan    schedule 27.04.2009
comment
При этом добавляется строка MyValidator1.clientvalidationfunction = MycustomJavascriptFunction; Есть ли способ установить функцию MyValidator1.evaluation? - person David Glenn; 27.04.2009

Я сам ответил на это, поскольку другой ответ не совсем дал то, что я хотел. Я закончил тем, что использовал.

public class MyValidator : BaseValidator, IScriptControl  {

  protected override void AddAttributesToRender(HtmlTextWriter writer) {
    base.AddAttributesToRender(writer);
    Page.ClientScript.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", "MyJavascriptFunction");
  }

}

Что приведет к созданию элемента управления:

MyValidator1.evaluationfunction = "MyJavascriptFunction";
person David Glenn    schedule 27.04.2009
comment
Я пробовал это, но ASP.Net жаловался, что атрибут уже добавлен. Любые идеи? - person Remotec; 28.11.2010

На самом деле гораздо проще использовать свойство ClientValidationFunction asp:CustomValidator, как показано ниже. Убедитесь, что НЕ указано свойство ControlToValidate.

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

function MyCustomJSFunction(validator, args) {
    args.IsValid = my condition;
}
person Bruno Calvignac    schedule 11.05.2016