GetCallBackeVentReference запускает валидаторы - как отключить его
-
12-10-2019 - |
Вопрос
У нас есть элемент управления сервером, который наследует от CompositeControl и реализует iPostbackdatahandler, icallbackeventhandler.
Когда мы запускаем Callbackevent для управления (используя page.clientscript.getCallBackeVentReference (это, «args», «обратный вызов», «контекст», true)), в асинхронном режиме он выполняет валидаторы страницы, которая не иметь определенную группу Validation.
Мне нужно избегать такого поведения, не устанавливая группу валидации каждому валидатору на странице, и я не делаю этого с помощью JavaScript (я знаю достичь цели).
Я также пытался реализовать iButtonControl, чтобы у меня было свойство CauseSeSvalidation и установить его на ложь, но это не сработало.
У кого -нибудь есть представление об этой проблеме?
Заранее спасибо!!
Себастьян.
Решение
Я нашел обходной путь в коде сервера, чтобы отключить валидаторы, не влияя на поведение страницы.
В событии LoadPostData элемента управления я отключаю каждый валидатор страницы, если обратный вызов исходит от элемента управления. И я понимаю, что это не влияет на поведение, поскольку реальный статус (свойство включения) валидатора не модифицируется. Я имею в виду: если я сделаю обратный вызов, где я отключил каждый валидатор, чтобы их не уволили, а затем я сделаю обратную связь, валидаторы все еще работают должным образом (если они включены до предыдущего обратного вызова)
Код, который я использовал,:
public virtual bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
if (postCollection["__CALLBACKID"] == this.UniqueID)
foreach (IValidator validator in Page.Validators)
(validator as WebControl).Enabled = false;
}
Я использую "_CallbackId "для проверки источника обратного вызова, причина" пост -объединение ["_Eventtarget "] - это нулевое, так как мы находимся в обратном вызове, а не в отправке