2009-03-03 68 views
2

我一直迴避添加屬性到我的ASP.NET頁面。這對我來說似乎不是一個好主意。但是,最近我在幾個示例應用程序中看到了這種做法。我厭惡添加自定義屬性到一個頁面沒有根據,或者這是一個「它取決於」的情況?ASP.NET頁面屬性好主意或壞主意

回答

3

關於您需要記住的屬性的事情是,它們持續整個頁面生命週期。這使得它們都非常有用(在生命週期的早期階段設置一個屬性,並且它稍後仍然有效)和危險的(在設置屬性之前訪問屬性很容易,或者沒有意識到另一個生命週期階段會改變它)。

我曾經見過的一個屬性用來獲得很好的效果是一種很好的類型安全的方式來包裝查詢字符串和Session。爲每個預期的查詢字符串或會話值定義屬性,對未來的開發人員來說,預期和可用的內容變得非常清楚。

另一個常見用途是包裝ViewState項目。我期望這是你在樣本中看到它們的地方,因爲大多數樣本傾向於假定ViewState已打開。

1

爲什麼它會不好?屬性實際上只是方法,我相信你總是在頁面中添加方法。

5

我看到使用屬性來清理服務器端頁面上的代碼沒有錯。我喜歡使用屬性來訪問會話狀態或視圖狀態信息,這種方式如果我修改我如何訪問數據,我只改變一個地方。

2

Asp.net不支持基於構造函數的注入。這是一個清晰的場景,您想使用asp.net屬性(因爲您可以使用基於屬性的注入)。

更新1:這裏是一個類似的情況,但對於控制 - How to use Dependency Injection with ASP.NET Web Forms

更新2:這是確定使用它們來包裝視圖狀態或查詢字符串。我會仔細看看它,因爲你不想濫用代碼隱藏。如果你看到你多次使用代碼隱藏的一個包裝屬性,代碼隱藏中可能有太多的代碼。以這種方式來看,它具有避免可以與這些屬性關聯的重複投射/解析的副作用。

0

我在我的asp.net頁面上使用屬性來訪問Session,Viewstate和querystring。它只會讓你編寫更少的代碼並提高可讀性

2

頁面上的屬性沒有任何問題。他們可能會覺得奇怪,因爲頁面很少被外部代碼作爲對象操作,但可以完成。鑑於此,頁面上的大多數屬性都可以標記爲私有。像所有事情一樣,也有例外。

我有我的網頁上性能的最大用途的包裝一ViewState的值時:

protected string TaskName 
{ 
    get { return (string)ViewState["TaskName"] ?? string.Empty; } 
    set { ViewState["TaskName"] = value; } 
} 

在這種情況下,我已標記屬性爲「受保護」,讓我從訪問我的標記。

相關問題