2011-02-24 18 views
1

許多WebMatrix示例和教程都使用PageData在頁面構建過程中(例如內容頁面和佈局頁面之間)在頁面之間傳輸數據。 例如...如何訪問WebMatrix C#文件中的PageData?

@{ 
    Layout = "/Shared/_Layout.cshtml"; 

    PageData["Title"] = "Passing Data"; 
    PageData["TraceData"] += "Start of the main page.|"; 
} 

這工作正常進行簡單的情況,但我現在已經使用PageData,我想將它重構爲一些C#類足夠的重複代碼。然而,在我找不到的任何示例或文檔中,是否有任何「使用」語句或任何其他上下文來指示PageData是(或屬於哪個)的對象。在一個cshtml文件中,它「僅僅存在」了一些我還沒有確定的魔法。

我怎樣才能訪問在C#類的PageData?例如,我希望能夠做這樣的事......

public static class MyTrace 
{ 
    public static void Add(string aMessage) { 
     PageData["TraceData"] += aMessage + "|"; 
    } 

    public static string Read() { 
     return PageData["TraceData"]; 
    } 
} 

(請注意:此跟蹤例子並不代表我使用的完整程度,但僅僅是一個簡單的例子來演示點如果在WebMatrix中有更好的方法來實現跟蹤系統,那麼我也想知道這個問題,但這不是問題的關鍵)。

回答

2

要訪問PageData屬性,請嘗試下面的代碼:

WebPageContext.Current.PagaData 

WebPageContext類型在System.Web.WebPages命名空間中可用。

+1

謝謝。至少在大多數情況下,這很好。 我發現有一個例外 - 從_PageStart.cshtml文件調用時。在這種情況下,PageData訪問似乎可以正常工作,但它必須是PageData的其他副本,因爲添加的數據在_PageStart頁面之外是不可見的。我仍然有點困惑,但我可以解決它。 –