aspx ページの上部に Cookie クラム (リンク ボタン) を動的に作成します。ユーザーがこのページの他のボタンをクリックすると、パンくずが読み込まれます。各クラムにはハイパーリンクがあり、ユーザーはそれをクリックしてクラムが参照するセクションに戻ることができます。ユーザーが owner.aspx ページでクラムを更新するボタンをクリックするたびに、パブリック変数を設定し、クラムを設定するサブ内の変数を参照します。ページの読み込み時にポストバックごとにこのサブルーチンを呼び出します。
また、owner.aspx に people.ascx コントロールがあり、ユーザーが people.ascx のボタンをクリックすると、owner.aspx の Cookie クラムを更新/設定したいと考えています。
これを行うには、people.ascx から owner.aspx でイベントを発生させようとしています。
- people.ascx のボタンの onclick サブで、次のイベントを発生させます。 RaiseEvent UpdateOwnerCookieCrumbs("2A") // この例では、変数 "2A" を渡していることに注意してください。
- people.ascx の先頭で、次のようにイベントを宣言します。 Public Event UpdateOwnerLandingPeopleCrumbs(PeopleCrumbID As String)
- owner.aspx の先頭で、次を使用して people.ascx から渡す変数を宣言します。 Public Property PeopleCrumbID As String
- owner.aspx のページ読み込みで、イベントを呼び出すハンドラーを追加します: AddHandler ucPeople_e.UpdateOwnerLandingPeopleCrumbs, AddressOf Me.BuildCrumbs
問題の核心は、人から所有者への変数の受け渡しにあります。
owner.aspx の BuildCrumbs サブは、すべてが owner.aspx のプレースホルダーに追加される Cookie クラムを動的に構築する場所です。
次のようなコードでボタンを作成します。
mybtn2.ID = "btnOwnerPeopleEmployees_Crumb"
mybtn2.ToolTip = "Manage my business employees"
mybtn2.Text = "Employees"
AddHandler mybtn2.Click, AddressOf OwnerLandingPeopleRedir
CookieCrumbs.Controls.Add(mybtn2)
上記のボタン ビルドの OwnerLandingPeopleRedir はサブです。したがって、owner.aspx で cookie crumb ボタンがクリックされた場合、OwnerLandingPeopleRedir サブルーチンを呼び出す必要があります。
問題?
owner.aspx で Cookie クラムを構築する要求が people.ascx から発生すると、owner.aspx のページ読み込みが発生します。ページの読み込みは、people.ascx から渡された PeopleCrumbID 変数の値を知らずに buildcrumbs サブルーチンを呼び出します (1 回目)。次に、owner.aspx のイベント ハンドラーが発生し、buildcrumbs サブルーチンが再度呼び出され (2 回目)、今度は PeopleCrumbID 変数が認識されます。コードのステップ実行はすべて良さそうです。ただし、ポストバック後に owner.aspx の cookie crumb ボタンをクリックすると、ボタンのハイパーリンクは OwnerLandingPeopleRedir サブを呼び出しません。そのため、コードが buildcrumbs を介して 2 回目に実行されると、ハイパーリンクが失われます。
ページの初期化イベントと他のすべてのイベントから BuildCrumbs Sub を呼び出して、ページのライフサイクルの早い段階でクラムを構築することが役立つかどうかを確認してみましたが、違いはありませんでした。
また、raiseevent で渡すのではなく、peoplecrumb のセッション変数を設定するようにコードを変更しようとしましたが、それもうまくいきませんでした。この場合、私が見つけたのは、ボタンを 2 回クリックすると、Cookie クラムが正常に構築されるということです...プログラミングは最初のパスで古いセッション変数の値を記憶し、それを正常に適用してクラムを構築します...grrrr。
私がこのこぶを乗り越えるのを助ける方法を知っている人はいますか? お願いします!:)