我遇到的问题是我的usercontrol在“回发时间轴”中加载太晚,因为它们是由于自定义事件而加载的。
因此,第一次单击时不会触发此用户控件上的按钮单击事件(整个回发仅发生单击的事件处理程序不会被引发)。然而,在第二次单击(因此第二次后退)时,事件处理程序工作正常。
如何在刚刚完成后立即自动调用第二个回复?所以我的usercontrol正确加载。
默认页面
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);
}
答案 0 :(得分:0)
您可以使用AllowPostBack=true
添加按钮(或其他控件),然后在此按钮上触发点击事件。