gpt4 book ai didi

asp.net - 用户控制命令按钮事件第一次未触发

转载 作者:行者123 更新时间:2023-12-02 04:11:33 31 4
gpt4 key购买 nike

我对 asp.net 相当陌生,并尝试使用它来学习页面生命周期。这是过去几天我无法解决的问题。

我有一个托管页面 (.aspx)。然后我有两个用户控件(.ascx)。该页面有一个占位符控件,它根据应用程序流一次加载一个用户控件。第一个用户控件在应用程序启动时加载。它有一个“继续”按钮。继续按钮单击加载具有两个按钮的第二个用户控件 - “返回”和“提交”。显然“返回”按钮应该再次加载第一个用户控件,提交按钮应该提交表单数据。很简单。

问题是我在第二个用户控件上的命令按钮事件处理程序第一次没有触发。 (两个按钮我都有一个事件处理程序)。用户控件的加载事件会触发,但随后会忽略按钮单击。如果我再次单击它,它就会触发。我在每个 page_load 中重新加载页面上的控件。这是一些相关的代码:

添加播放器.aspx:

protected void Page_Load(object sender, EventArgs e)
{
PlaceHolder1.Controls.Clear();

        // Load the ctlInputPlayer control
Control ctlToAdd = LoadControl("ctlInputPlayer.ascx", null);

if (ctlToAdd != null)
{
_ctlInputPlayer = (ctlInputPlayer)ctlToAdd;
_ctlInputPlayer.SendPlayerData += new EventHandler(ctlInputPlayer_SendPlayerData);
PlaceHolder1.Controls.Add(_ctlInputPlayer);
}

// see if there is player data available in the view State
PlayerData player = (PlayerData)ViewState["Player"];

if (player != null)
{
ctlToAdd = LoadControl("ctlPlayerInfo.ascx", player);

if (ctlToAdd != null)
{
_ctlPlayerInfo = (ctlPlayerInfo)ctlToAdd;
_ctlPlayerInfo.SubmitPlayerData += new EventHandler(ctlPlayerInfo_SubmitPlayerData);
PlaceHolder1.Controls.Clear();
PlaceHolder1.Controls.Add(_ctlPlayerInfo);
}
}
}

ctlPlayerInfo.ascx(第二个用户控件):





ctlPlayerInfo.ascx.cs

protected void CommandBtn_Click(对象发送者,CommandEventArgs e)
{
开关(e.CommandName)
{
案例“提交”:
                //submitPlayerData will fire here
break;

case "Back":
// editplayer data will fire here
break;
}
}

protected void Page_Load(object sender, EventArgs e)
{

//在此处加载控制数据....

}

page_Load 每次都会触发,但“CommandBtn_Click”在第一次单击后不会触发。我必须再次点击它。我单击按钮的顺序无关紧要。

我很感激帮助。让我知道是否需要更多详细信息。谢谢!

最佳答案

您应该每次在 Page_Init 中加载您的用户控件并设置 ID 属性。

关于asp.net - 用户控制命令按钮事件第一次未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4775079/

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