2010-09-28 122 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