2010-09-28 85 views
2

我已经创建了几个DNN(5.2.3)模块,并且我发现如果对象数据源(ODS)上发生错误,DNN会将该错误显示为大家。下面显示了一个示例(尽管在这种情况下不是ODS特定的错误)。这对用户没有任何意义。这个例外应该是“Thing not found”或类似的东西给用户。问题是这个DropDownList绑定到ODS。所以我的问题是:如何处理DotNetNuke中的对象数据源异常处理

  1. 如何在DNN我可以覆盖此行为显示一个有用的消息使用ODS绑定?
  2. 如何在DNN中覆盖此行为以显示当前模块的所有错误的一般化异常,如果无法捕获到特定的异常以向用户提供有用的消息?

示例: 'SelectedThingDropDown'具有一个无效的SelectedValue,因为它在项目列表中不存在。参数名称:值

PS>我知道try/catch Exceptions.ProcessModuleException(e,ex)。问题是这不适用于ODS绑定,除非我做错了什么。

回答

1

在处理ODS和DropDownList时,您可以检查多少个地方。这里是其中一些列表。

  1. ODS_Selected事件,检查e.Exception:调用Select方法时,此对象有错误。如果没有错误,则为空。如果您发现错误,您可以禁用ddl并在用于通知的标签中放置用户友好的消息。
  2. DDL_DataBound事件:不要用选定值直接绑定,试图通过类似值来查找DLL的项目:
ListItem item = ddl.Items.FindByValue(''); 
if(item != null) item.selected = true; 

请记住,模块负载例外会在那里只是如果你不处理异常,如果你觉得它们对用户没有帮助,你可以用你自己的用户通知方法在try catch的帮助下覆盖它们。但不要忘记在事件日志中为错误创建条目,以便您可以跟踪错误并对其进行优化。

祝你好运。

+0

DDL从ODS加载。所选值不在DDL中并引发异常。 ODS中没有任何代码隐藏。 – thames 2010-10-27 21:01:21