1

当我有一个需要影响父页面中某些内容的子 .ASCX 控件时,我不完全确定在需要更新父页面中的某些内容的情况下我应该如何处理事件流。

我最终所做的就是将逻辑放入“Pre_Render”事件处理程序中。

由于这是在处理任何子 .ascx 控件之后处理的,因此我可以确保在 ASPX 页面显示之前正确呈现它。我只是不认为这是一个好的设计,当我不得不这样做时,我总是畏缩不前。但是现在有stackoverflow,所以我终于可以问了!

例如,假设我在页面中有一个“登录控件”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 回答