2011-02-24 2 views
1

WebMatrixの例とチュートリアルの多くは、PageDataを使用して、ページ構築プロセス中にページ間でデータを転送します(コンテンツページとレイアウトページの間など)。例えば は...WebMatrix C#ファイルのPageDataにアクセスする方法は?

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

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

これは、単純な状況では正常に動作しますが、私は今、私はいくつかのC#クラスにそれをリファクタリングしたいInboundのPageDateを使用して、十分な繰り返しのコードを持っています。しかし、私が見つけることができた例やドキュメンテーションのいずれも、「使用」ステートメント、またはPageDataがどのオブジェクト(またはそのプロパティ)であるかを示すその他のコンテキストはありません。 cshtmlファイルでは、それは私がまだ決めることができなかったいくつかの魔法の「ただそこに」ある。

PageDataにC#クラスでアクセスするにはどうすればよいですか?例えば、私は...このような何かをできるようにしたいと思い

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ファイルから呼び出されたときに私が見つけた例外が1つあります。この場合、PageDataアクセスは機能しているようですが、追加されたデータは_PageStartページの外側には表示されないため、他のPageDataのコピーと同じでなければなりません。私はまだこれで少し混乱していますが、私はそれを回避することができます。 –

関連する問題