2016-04-11 9 views
2

.Netユーザーコントロール内に、コントロールが以前にページに読み込まれているかどうかを確認する方法はありますか?UserControlが以前にロードされたページを確認する

私は、ロード時に各コントロールを追跡するために.Netセッション変数に変数を格納しようと考えていました。そして、変数をページプリレンダリングイベントに処分しました。これを達成するためのより良い方法が必要であると私には思われます。

私はこれを行う必要がある理由は、usercontrolsがsitecore内のサブレイアウトとして読み込まれているため、コンテンツ作成者がコントロールをページに追加した回数がわからないからです。コントロールがページに呼び出されたのが初めての場合は、サードパーティサービス用のdivタグを追加する必要があります。 divタグが複数回出現する場合、サードパーティのサービスgawks。

答えて

5

HttpContext.Current.Itemsを使用して、ロードされたコントロールに関する情報を保持してください。

名前が示すとおり、HttpContext.Currentは1回のWebリクエストのみです。古いデータの廃棄や消去について心配する必要はありません。

if (HttpContext.Current.Items["I was here"] == null) 
{ 
    // do custom div magic 
    HttpContext.Current.Items["I was here"] = true; 
} 
+0

ありがとうございました!それは素晴らしい@Marek –

+1

しかし、あなたがサブレイアウトのキャッシングとパーソナライゼーションを使用する場合、100%信頼できるものではありません。それでも大丈夫なら、 –

+1

@JanBlueminkと完全に同意してください。そのサブレイアウトの出力をキャッシュすると、コードは実行されないことを考慮してください。 –

関連する問題