1

親ページで何かに影響を与える必要がある子 .ASCX コントロールがある場合、親ページで何かを更新する必要がある場合に、イベント フローをどのように処理すればよいか完全にはわかりません。

私がいつもやっていることは、'Pre_Render' イベント ハンドラーにロジックを入れることです。

これは、子の .ascx コントロールが処理された後に処理されるため、ASPX ページを表示する前に正しくレンダリングすることができます。私はこれが良いデザインだとは思わず、そうしなければならないときはいつもうんざりしてきました. でも今はスタックオーバーフローがあるから、やっと聞ける!

たとえば、ページに「ログイン コントロール」ascx コントロールがあるとします。含まれているページでは、「現在ログインしているユーザー」のヘッダー バーにテキスト ラベルが表示されます。

「ログイン」ボタンをクリックすると、認証がトリガーされ、ユーザーがログインするとします。問題は、親ページのテキスト ラベルが既に「ユーザーがログインしていません」としてレンダリングされていることです。それは良くないね!

ロジックを「PreRender」に入れることで、ユーザーがログインした後にレンダリングされます。PreRender の目的ではないため、これは好きではありません。

ここで私が見逃しているベストプラクティスは何ですか? ユーザーコントロールにイベントハンドラーを配置できることはわかっていますが、結合が多すぎるため、それも扱いにくいようです。

PS。これを例として使用しているだけです。私は何度もこの問題を抱えていたので、ログインの実装方法を教えて返信しないでください!

4

1 に答える 1

1

ascx.cs で:

public delegate void NavigateEventHandler(int PID); // if you want a custom handler
public event NavigateEventHandler onNavigate;

page.aspx.cs で:

protected void Page_Init(object sender, EventArgs e) {
    eSelector1.onNavigate += new PostSelector.NavigateEventHandler(eSelector1_Navigate); }
public void eSelector1_Navigate(int PID) {
    eSelector1.PopulateComments(eSelector1.m_PID); }
于 2008-11-03T06:49:06.340 に答える