2009-06-01 49 views
1

我爲我們網站的不同元素使用了很多中繼器,而且我一直在想,如果發生異常而不是讓整個頁面崩潰,是否有方法讓中繼器跳過元素?ASP.Net:如果發生錯誤,是否可以跳過元素的數據綁定?

特別是,我從另一位開發人員那裏繼承了一個使用類似設計的系統,但是他沒有對他的業務對象進行任何類型的驗證,並且缺少一個屬性,整個事情都在增加在煙霧中。

有什麼建議嗎?

在此先感謝!

回答

0

我看到它的方式,至少有三個選項。

  1. 你可以創建一個繼承System.Web.UI.WebControls.Repeater定製Repeater控件和重寫數據綁定行爲,更嘗試上口(可能失敗默默的數據綁定錯誤)。然後,您可以輕鬆地將標準Repeater的所有實例替換爲新的實例。
  2. 您可以在數據綁定之前過濾數據源,以便事先刪除您知道會導致問題的項目。這個選項可能相當費力,而且是一個迭代過程。
  3. 您可以嘗試向業務對象添加默認值,以便您綁定的屬性返回默認實例而不是null(不是很好)。

無論如何,這是我的想法。

有一個問題 - 你說「當一個物業失蹤」。你的意思是他使用的是一種數據綁定語法,它不提供編譯時檢查,並且引用了不存在的屬性,或者引用了空值的屬性?

編輯

好的,所以你引用的屬性是null。如果您有權訪問業務對象的代碼,則可以修改它們,以便它們返回一個新的非空實例(這是我提供的第三個選項)。

你不會說如果你使用.net 3.5,但我會假設你是。您可以爲每個業務對象添加一個新的屬性「IsValidForDataBinding」。在getter邏輯中,您可以檢查每個必需的屬性和子對象以檢查有效性,非空等等,並返回一個布爾值。當你來綁定你的中繼器時,寫一個簡單的linq語句來過濾掉無效的項目(例如,IsValidForDataBinding = false)。話雖如此,我仍然認爲編寫派生的中繼器控制可能是最簡單的選擇。

+0

謝謝,dorko。爲了澄清,在數據綁定期間,我最終引用了屬性爲null的屬性。 – 2009-06-01 18:48:35

1

我可以提供的最簡單的建議是在數據傳遞給中繼器之前檢查數據的有效性。我不相信有任何方法可以讓股票中繼器跳過錯誤的數據元素。

另一種方法是構建自己的中繼器,繼承自基地中繼器,以添加該功能,但我沒有示例代碼提供。也許別人可能會在那裏幫助。

0

您是否嘗試過使用string.isnullorempty(「字符串」)來檢查引用屬性之前的值?

以下是參考:MSDN