2009/10/11

[UserControl] 使用者控制項的測試注意事項

使用者控制項是 ASP.NET 中非常重要的一種控制項。基本上,它是一個類別,也可以看作元件,但是它卻提供視覺化 (Visualized) 的設計介面,可以方便你以堆積木的方法一塊一塊的把網頁架構起來。

我十分鼓勵大家多多使用使用者控制項來設計你的網頁。一方面,它很方便而且容易設計,因為它的作法和普通網頁幾乎沒有什麼不一樣。另一方面,你可以藉由它所提供的程式再利用的特色,簡化你的程式設計。再者,你可以把部份程式設計邏輯封裝 (Encaptualize) 起來,當你有需要修改程式的時候,就可以分割處理,用不著全部修改。

不過使用者控制項再方便,它也有它的盲點。我將在這篇文章裡列出測試使用者控制項的注意事項。

  1. 測試同一網頁中有兩個以上相同的使用者控制項 - 有太多程式設計上不小心忽略的疏忽,會造成同一網頁上出現兩個以上的相同使用者控制項時會出問題,包括 Cookie/Session/Membership 的使用衝突、JavaScript 的重複註冊等等。
  2. 把使用者控制項放置在 Container 裡面並仔細測試 - 我這裡所講的 Container,當然不是指像 ContainPlaceHoder、Div、Panel 等等,而是特別指具有 Template 功能的 Container 控制項,尤其是像 GridView/DetailsView/FormView 等等。除非你確定你的使用者控制項絕對不可能被放置在這種 Container 控制項裡面,不然你不應該忘記測試這一項。在 ASP.NET 的 Templated Container 控制項中,當你在 Runtime 時期開啟了對應的 Template 時(例如進入編輯狀況),Container 的行為和平常時候是不一樣的,所以問題時常出現在這個地方。
  3. 承上,特別測試 Container 控制項的連動功能 - 我們知道,在 ASP.NET 2.0 中,你可以很容易的讓 Container 控制項進行連動 (Cascade),尤其是用來作為 Master/Detail 展示的時候。例如,你可以讓一個 GridView 來做為 Master 項目的瀏覽容器,再設計一個 DetailsView 來作為 Details 項目的展示/編輯容器,中間只需要透過在 DataSource 裡面加上 ControlID,就可以讓資料來源隨著另一個控制項的選取項目而連動了。但是問題也正出現在這裡;在許多情況下,沒有連動不會出問題,有連動就會出問題,而且問題總會顯示在顯示 Master 的項目上,但問題本身卻是在顯示 Details 的控制項上。若你在 Container 的 Template 中加上了 User Control, 情況可能更形複雜, 需要額外的測試。
Technorati 的標籤:,,

沒有留言:

張貼留言