C# ASP.NET Webforms中控件消失的问题

C# ASP.NET Webforms中控件消失的问题,c#,html,asp.net,webforms,frontend,C#,Html,Asp.net,Webforms,Frontend,我对ASP.NETWebForms真的很陌生。目前,我正在尝试更改页面上的一些代码:我有一个包含多个选项卡的模式。其想法是将其中两个选项卡的内容移动到一个弹出窗口中(这也是另一个模式本身),当你按下按钮时,弹出窗口就会显示出来。代码完成了,当我复制了相同的代码时(我将选项卡保持在模式中,并且按钮显示了一个弹出窗口,其中包含相同的两个选项卡,这意味着新旧代码同时并存),弹出窗口工作得非常好,正如预期的那样。我是如何让它工作的,只是创建了一个新的模式,并将原始代码复制粘贴到选项卡面板中的两个选项卡中

我对ASP.NETWebForms真的很陌生。目前,我正在尝试更改页面上的一些代码:我有一个包含多个选项卡的模式。其想法是将其中两个选项卡的内容移动到一个弹出窗口中(这也是另一个模式本身),当你按下按钮时,弹出窗口就会显示出来。代码完成了,当我复制了相同的代码时(我将选项卡保持在模式中,并且按钮显示了一个弹出窗口,其中包含相同的两个选项卡,这意味着新旧代码同时并存),弹出窗口工作得非常好,正如预期的那样。我是如何让它工作的,只是创建了一个新的模式,并将原始代码复制粘贴到选项卡面板中的两个选项卡中,这是一个普通的东西。 然而,一旦我最终删除了旧代码,整个过程就停止了。我复制粘贴的代码中的所有控件都停止工作;它们从设计器中删除。如果我在设计器中设置了更改,基本上强制控件的代码重新存在,错误将消失,代码将运行,但所有内容都将设置为null,页面将不会加载

我的新代码仍然在同一个html文件中,在同一个content div中,但由于某种原因,我太新手了,无法理解,它只是找不到控件。下面是我的html代码片段:

<asp:RequiredFieldValidator ID="RequiredFieldValidator3" Display="Dynamic" ValidationGroup="PaymentTermsForm" runat="server" ControlToValidate="ddlPayeeTerms" InitialValue="0" SetFocusOnError="true" ErrorMessage="Payee Terms is required" CssClass="required-field-validator-information"></asp:RequiredFieldValidator>

DDLPayeterms控件完全丢失;复制和粘贴的所有其他元素也是如此。代码的所有内容均在此标记内:

<asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional">
                                            <ContentTemplate>

我对webforms的了解还不够,不知道这个事实是否相关,所以我只是添加了它以防万一

我真的可以用一只手来了解发生了什么以及为什么会这样,如果有办法解决这个问题?
提前感谢各位。

如果不看到正在发生的一切,包括删除时出现的错误,很难回答这个问题

考虑到您的控件已运行at=“server”,您可能在后端有与控件关联的代码(位于aspx文件后面的cs文件)。显然,在不修改代码的情况下删除这些控件会导致错误,并且无法工作。隐藏的代码使用ID读取控件,因此它们都必须是唯一的


如果你能告诉我删除控件后出现的错误,我可能会帮你多一点

如果不看到正在发生的一切,包括删除时出现的错误,就很难回答这个问题

考虑到您的控件已运行at=“server”,您可能在后端有与控件关联的代码(位于aspx文件后面的cs文件)。显然,在不修改代码的情况下删除这些控件会导致错误,并且无法工作。隐藏的代码使用ID读取控件,因此它们都必须是唯一的


如果你能告诉我删除控件后出现的错误,我可能会帮你多一点

嗯,我不知道唯一的ID,我知道控件的名称,它们的键所在的位置,所以如果名称和类型相同,它们会工作得很好,但现在你告诉我,这可能是怎么回事。不过,这并不能解释这样一个事实,即当我复制并粘贴代码时,只要原始代码仍然存在,复制的代码就可以正常工作。。。当它尝试加载控件时(如果我将控件的代码添加到设计器中),我只会得到一个典型的null对象异常。如果没有添加控件,它会说它们没有定义。那么,当您复制控件时,它是否自动为它们添加了不同的ID?我只需要调出我的一个旧项目,它有aspx页面并复制了控件。原始控件ID为ID=“evalStatus”,而复制的版本ID=“DropDownList1”(是,控件是下拉列表)。因此,我的代码隐藏正在使用原始ID,一旦我删除原始控件,它会给我一个空对象异常,因为代码隐藏找不到具有这些ID的控件。因此,要么将新控件的ID更新为与旧控件相同的名称,要么更新代码隐藏。您完全正确。天哪,我真不敢相信我没有意识到。你真的帮助了我,谢谢你!嗯,我不知道唯一的ID,我知道控件的名称,它们的键所在的位置,所以如果名称和类型相同,它们会工作得很好,但现在你告诉我,这可能是怎么回事。不过,这并不能解释这样一个事实,即当我复制并粘贴代码时,只要原始代码仍然存在,复制的代码就可以正常工作。。。当它尝试加载控件时(如果我将控件的代码添加到设计器中),我只会得到一个典型的null对象异常。如果没有添加控件,它会说它们没有定义。那么,当您复制控件时,它是否自动为它们添加了不同的ID?我只需要调出我的一个旧项目,它有aspx页面并复制了控件。原始控件ID为ID=“evalStatus”,而复制的版本ID=“DropDownList1”(是,控件是下拉列表)。因此,我的代码隐藏正在使用原始ID,一旦我删除原始控件,它会给我一个空对象异常,因为代码隐藏找不到具有这些ID的控件。因此,要么将新控件的ID更新为与旧控件相同的名称,要么更新代码隐藏。您完全正确。天哪,我真不敢相信我没有意识到。你真的帮助了我,谢谢你!