page_load メソッドでPage.IsPostBackプロパティを使用します。
例えば:
private void Page_Load()
{
if (!IsPostBack)
{
// Do anything here you want to only happen when
// the page is loaded 1st time
// such as hit the database for the menu...
CreateMenu();
}
}
メニューをユーザー コントロールにする場合は、キャッシュ (パラメータによる) を使用して各ユーザーのメニューをキャッシュできますが、これを追加するのは、ロジックをテストした後でのみです。
編集 - コメントへの応答
ユーザー コントロールとしてメニューを作成し、コントロール出力キャッシュを使用して、ユーザーがログインしたときにメニューが作成され、その後キャッシュに保持されるようにします。ユーザーがアクセスしている間にメニューが変更されない場合は、非常に積極的なキャッシュを持つことができます。それ以外の場合は、行われた変更にメニューが応答する必要がある場合 (おそらく管理者がユーザーに別のメニュー項目を付与する場合)、変更されるまでキャッシュできます。データベースで検出されます。
部分的なページ出力キャッシュを実現する方法の例については、ASP.NET ページのキャッシュ部分に関する MSDN ドキュメントも参照してください。