如何从代码隐藏调用回发

本文关键字:调用 隐藏 代码 | 更新日期: 2024-11-07 13:59:39

我在"回发时间线"中加载用户控件太晚时遇到问题,因为它们是由于自定义事件而加载的。

因此,此用户控件上的按钮单击事件不会在第一次单击时触发(整个回发仅发生单击的事件处理程序不会引发)。但是,在第二次单击(以及第二次回发)时,事件处理程序工作正常。

如何在刚刚完成第二次回发后立即自动调用?所以我的用户控件正确加载。

默认页面

public interface IEventProvider
{
    void TriggerEvent(String path);
}

public partial class Default : System.Web.UI.Page, IEventProvider
{
    private string LastLoadedControl
    {
        get
        {
            return Session[Paths.CURRENTCTRL] as string;
        }
        set
        {
            Session[Paths.CURRENTCTRL] = value;
        }
    }
    private void LoadUserControl()
    {
        string controlPath = LastLoadedControl;
        ContentPlaceholder.Controls.Clear();
        if (string.IsNullOrEmpty(controlPath))
            controlPath = Utils.Paths.USERCTRL_BASE + "Main.ascx";
        Control uc = Page.LoadControl(controlPath);
        ContentPlaceholder.Controls.Add(uc);
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        LoadUserControl();
    }
    public void TriggerEvent(String path)
    {
        if (path.Equals("logout"))
        {
            Session.Clear();
            Session.Abandon();
            LastLoadedControl = null;
        }
        else LastLoadedControl = Paths.USERCTRL_BASE + path + ".ascx";
        LoadUserControl();
    }
}

用户控制代码

protected void profileBtn_Click(object sender, EventArgs e)
    {
        Utils.Events.triggerRedirectPage(this.Page, "Login");
    }

事件代码

 public static void triggerRedirectPage(Page p, String path)
    {
        IEventProvider eventProvider = p as IEventProvider;
        if (eventProvider != null)
            eventProvider.TriggerEvent(path);
    }

如何从代码隐藏调用回发

您可以使用AllowPostBack=true添加一个按钮(或其他控件),然后在此按钮上触发单击事件。