Как обрабатывать исключения источника данных объекта в DotNetNuke

Я создал несколько модулей DNN (5.2.3) и обнаружил, что если в источнике данных объекта (ODS) произойдет ошибка, DNN покажет эту ошибку всем. Образец (хотя в данном случае это не ошибка ODS) показан ниже. Это не имеет значения для пользователя. Исключение действительно должно быть «Вещь не найдена» или что-то в этом роде для пользователя. Проблема в том, что этот DropDownList привязан к ODS. Итак, мои вопросы:

  1. Как в DNN я могу переопределить это поведение, чтобы показать полезное сообщение с помощью привязки ODS?
  2. Как в DNN я могу переопределить это поведение, чтобы показать обобщенное исключение для всех ошибок для текущего модуля, если конкретное исключение не может быть перехвачено, чтобы дать пользователю полезное сообщение?

Пример: 'SelectedThingDropDown' имеет SelectedValue, которое является недопустимым, поскольку оно не существует в списке элементов. Имя параметра: значение

PS> Я знаю про try/catch Exceptions.ProcessModuleException(e,ex). Проблема в том, что это не работает для привязки ODS, если только я не делаю что-то не так.


person thames    schedule 28.09.2010    source источник


Ответы (1)


Есть ряд мест, которые вы можете проверить при работе с ODS и DropDownList. Вот список некоторых из них.

  1. Событие ODS_Selected, проверьте e.Exception: у этого объекта возникают ошибки при вызове предоставленного метода Select. Это null, если нет ошибки. Если вы обнаружите ошибку, вы можете отключить ddl и поместить удобное сообщение в метку для уведомления.
  2. Событие DDL_DataBound: не связывайте выбранное значение напрямую, попробуйте найти элементы dll по значению, например:
ListItem item = ddl.Items.FindByValue('');
if(item != null) item.selected = true;

Имейте в виду, что исключение загрузки модуля будет только в том случае, если вы не обрабатываете исключения, если вы чувствуете, что они бесполезны для пользователя, вы можете переопределить их с помощью своего собственного метода уведомления пользователя с помощью try catch, как вы сказали. но не забудьте создать записи в журнале событий для ошибки, чтобы вы могли отслеживать свои ошибки и оптимизировать их.

Удачи.

person Prashant Lakhlani    schedule 29.09.2010
comment
DDL загружается из ODS. Выбранное значение отсутствует в DDL и создает исключение. Кода нет, все делается в ODS. - person thames; 28.10.2010