Я добавил элемент управления пользователя в PlaceHolder с идентификатором phcustomFields. Когда я хочу удалить пользовательский элемент управления в phcustomFields, я вызываю phcustomFields.Controls.Clear(). Однако, после этого, мой метод page_Load моего usercontrol по-прежнему попадает (я проверял это, поставив точку останова в пользовательском элементе управления.) Почему метод page_load моего пользовательского элемента все еще называется? Я думал, что экземпляр моего пользовательского элемента управления был удален и уничтожен после вызова метода Clear().ASP.NET: как уничтожить динамически добавленный элемент управления пользователя
Update
Ниже приведен пример кода, который демонстрирует мою проблему. Установив точку останова в методе Page_Load HelloWorld.ascx и отлаживая страницу Page.aspx, процесс отладки остановится на методе Page_Load в HelloWorld.ascx, который ожидается и будет прекрасен мной. Но когда я нажимаю кнопку «Удалить HelloWorld.ascx», чтобы удалить элемент управления пользователя, а затем нажмите кнопку «Ничего», чтобы вызвать обратную передачу, процесс отладки STILL останавливается на методе Page_Load HelloWorld.ascx. Однако это не должно происходить, потому что был вызван метод Clear() в phTest.
Page.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Page.aspx.cs" Inherits="WebApplication1.Page" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Control C = LoadControl("HelloWorld.ascx");
phTest.Controls.Add(C);
}
protected void Remove_OnClick(object sender, EventArgs e)
{
phTest.Controls.Clear();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button Text="Does nothing" runat="server" />
<asp:Button Text="Remove HelloWorld.ascx" OnClick="Remove_OnClick" runat="server" />
<asp:PlaceHolder ID="phTest" Visible="false" runat="server">
</asp:PlaceHolder>
</div>
</form>
</body>
</html>
HelloWorld.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="HelloWorld.ascx.cs" Inherits="WebApplication1.HelloWorld" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
int i = 0;
}
</script>
<b>Hello World</b>
Можете ли вы показать нам небольшой код? – AnthonyWJones