gpt4 book ai didi

asp.net 按钮事件未触发

转载 作者:行者123 更新时间:2023-12-02 17:22:12 27 4
gpt4 key购买 nike

我有一个问题。当我将事件处理程序从代码隐藏添加到按钮时,该事件永远不会被触发。但是当我在创建按钮标签时添加它时,它工作得很好,并且我从后面的代码创建按钮并将其添加到表中。

<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="show table" OnClick="Button1_OnClick" />
<table border="1">
<thead>
<tr>
</tr>
</thead>
<tbody id="tbody" runat="server">

</tbody>
</table>
</div>
</form>


protected void Button1_OnClick(object sender, EventArgs e)
{
var row = new TableRow();
var btnDownload = new Button { ID = "ID", Text = "Click Here" };
btnDownload.Click += ClickEvent;
var cell = new TableCell();
cell.Controls.Add(btnDownload);
row.Controls.Add(cell);
tbody.Controls.Add(row);
}
protected void ClickEvent(object sender, EventArgs e)
{
Debug.WriteLine(((Button)sender).Text);
}

最佳答案

请不要接受这个答案,chappoo 回答了您的问题

由于事件被触发一次,因此您的控件将仅存在一次,并将在下一个 PostBack 处消失。您不应在 PostBack 事件中创建/删除控件。 Dynamic server controls must be created during the Init of the page

以下是一些了解 ASP.NET 和 ASP.NET MVC“生命周期”的链接。

ASP.NET

您可以看到,任何控件都必须存在于页面的 Load 期间才能引发控件事件 ( RaiseChangedEvents ) 和回发事件 ( RaisePostBackEvent )。例如,页面子控件和控件子控件在页面 CreateChildControls 之后创建( OnPreRender )、数据绑定(bind)(在 RenderControl 之后)并呈现( Load )。有时,有些开发者在页面EnsureChildControls中调用Load来预加载子控件。

http://msdn.microsoft.com/en-us/library/ms178472.aspx ASP.NET Page LifeCycle

ASP.NET MVC

“生命周期”纯粹用于请求处理。操作( Controller )独立于渲染( View )。

ASP.Net MVC - Request Life Cycle

http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/entrypage/be-ahead-of-the-game-poster1 ASP.NET MVC 'life cycle'

关于asp.net 按钮事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18120203/

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