Как я могу переписать ErrorMessage для управления CustomValidator на клиенте?

Мы использовали Профилировщик Муравьев Pro программным обеспечением Red Gate в нашем проекте. Это работает действительно хорошо на всю.NET основанные на языке приложения.

Мы нашли, что Сборщик "мусора".NET "очень безопасен" в своей чистке объектов в оперативной памяти (как это должно быть). Это имело бы в наличии объекты просто, потому что мы могли бы использовать его когда-то в будущем. Это означало, что мы должны были быть более осторожны относительно количества объектов, которые мы расширили в памяти. В конце мы преобразовали все наши объекты данных к, "расширяются по запросу" (непосредственно перед тем, как поле требуют) для сокращения памяти наверху и выполнения увеличения.

РЕДАКТИРОВАНИЕ: вот дальнейшее объяснение того, под чем я подразумеваю, "расширяются по требованию". В нашей объектной модели нашей базы данных мы используем Свойства родительского объекта представить дочерний объект (объекты). Например, если бы у нас была некоторая запись, которая сослалась на некоторую другую запись "детали" или "поиска" на непосредственной основе, то мы структурировали бы его как это:

class ParentObject
   Private mRelatedObject as New CRelatedObject
   public Readonly property RelatedObject() as CRelatedObject
      get
         mRelatedObject.getWithID(RelatedObjectID)
         return mRelatedObject
      end get
   end property
End class

Мы нашли, что вышеупомянутая система создала некоторую реальную память и проблемы производительности, когда было много записей в памяти. Таким образом, мы переключились на систему, где объекты были расширены только, когда их требовали, и вызовы базы данных были сделаны только когда необходимый:

class ParentObject
   Private mRelatedObject as CRelatedObject
   Public ReadOnly Property RelatedObject() as CRelatedObject
      Get
         If mRelatedObject is Nothing
            mRelatedObject = New CRelatedObject
         End If
         If mRelatedObject.isEmptyObject
            mRelatedObject.getWithID(RelatedObjectID)
         End If
         return mRelatedObject
      end get
   end Property
end class

Это оказалось намного более эффективным, потому что объекты были не допущены в память, пока они не были необходимы (к Получить методу получили доступ). Это обеспечило очень большое повышение производительности ограничения хитов базы данных и огромного усиления на пространстве памяти.

6
задан Dustman 5 August 2009 в 02:15
поделиться

5 ответов

Похоже, вы используете jquery, поэтому вы можете установить сообщение об ошибке следующим образом:

$(sender).text("* Not a NA Phone #");

Изменить:

Извините за задержку, но меня не было в отпуске.

Я был играть раунд с простой страницей , и я думаю, что понимаю, как это работает.

Когда вы устанавливаете сообщение об ошибке для отправителя в функции проверки на стороне клиента, вы устанавливаете эквивалент свойства ErrorMessage . Это отличается от свойства Текст . ErrorMessage устанавливает текст, отображаемый в сводке проверки, а свойство Текст - это текст, отображаемый в элементе управления проверкой. Обратите внимание, что если вы установите только свойство ErrorMessage (на сервере), тогда ErrorMessage будет скопировано в свойство Text .

Это означает что когда вы устанавливаете sender.errormessage , вы фактически устанавливаете текст, который отображается в сводке проверки.

Надеюсь, это поможет прояснить ситуацию. Однако я до сих пор не нашел способа изменить свойство Text из функции проверки на стороне клиента. Я также не уверен, почему ваш объект-отправитель не является объектом валидатора.

2
ответ дан 8 December 2019 в 18:39
поделиться

Я думаю, проблема в том, что на стороне клиента нет свойства errormessage. Пользовательский валидатор отображает тег для отображения сообщения об ошибке с идентификатором, соответствующим свойству id пользовательского элемента управления валидатором. Чтобы установить текст, отображаемый при сбое проверки, вам нужно сделать что-то вроде этого.

... 
case "North America":
    args.IsValid = validateNAPhoneNumber(cleanNumber);
    if (!args.IsValid) 
        document.getElementById(sender.id).innerText = "* Not a NA Phone #";
    break;
...
0
ответ дан 8 December 2019 в 18:39
поделиться

Чтобы изменить сообщение об ошибке, сделайте это следующим образом:

if (!args.IsValid) document.getElementById('<%= cstPhoneNumber.ClientID %>').errormessage = "* Not a NA Phone #";

Чтобы изменить текст, сделайте следующее:

if (!args.IsValid) document.getElementById('<%= cstPhoneNumber.ClientID %>').innerHTML = "* Not a NA Phone #";

cstPhoneNumber следует заменить на имя вашего проверяющего элемента управления.

3
ответ дан 8 December 2019 в 18:39
поделиться

Просто удалите все экземпляры Text и ErrorMessage в определениях пользовательских тегов валидатора , затем используйте

$(#id_of_custom_validation_control).text("custom error message");

Затем с этим вы можете использовать один пользовательский элемент управления валидатора и обрабатывать несколько условий ошибок

Например

if(error1){
  $(#id_of_custom_validation_control).text("custom error message1");
}else $(#id_of_custom_validation_control).text("custom error message2");

Надеюсь, это поможет

0
ответ дан 8 December 2019 в 18:39
поделиться

sender.innerText = "Ваше сообщение" будет работать.

1
ответ дан 8 December 2019 в 18:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: