gpt4 book ai didi

c# - 如何从后面的代码调用回发?

转载 作者:行者123 更新时间:2023-11-30 18:26:14 25 4
gpt4 key购买 nike

我的用户控件在“回发时间线”中加载得太晚了,因为它们是作为自定义事件的结果加载的。

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

如何在一个回传结束后立即自动调用第二个回传?所以我的用户控件被正确加载。

默认页面

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 添加一个按钮(或其他控件),然后触发此按钮上的点击事件。

关于c# - 如何从后面的代码调用回发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28961057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com