Как мне подключить javascript к моему элементу управления CustomValidator в .Net

StackOverflow https://stackoverflow.com/questions/792858

Вопрос

Я создал элемент управления 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;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top