ASP.NET Webforms UpdatePanel重复内容

ASP.NET Webforms UpdatePanel重复内容,asp.net,webforms,updatepanel,Asp.net,Webforms,Updatepanel,我收到了一个巨大的Webforms项目,我正在努力理解它,我遇到了一个问题,更新面板复制了它的很多内容。面板的aspx代码非常庞大,有数百行长,但基本上看起来像这个简单的示例,只是有更多的asp:TextBox和asp:ListBox <asp:UpdatePanel runat="server" ChildrenAsTriggers="true" RenderMode="Block" UpdateMode="Conditional"> <Content

我收到了一个巨大的Webforms项目,我正在努力理解它,我遇到了一个问题,更新面板复制了它的很多内容。面板的aspx代码非常庞大,有数百行长,但基本上看起来像这个简单的示例,只是有更多的
asp:TextBox
asp:ListBox

<asp:UpdatePanel runat="server" ChildrenAsTriggers="true" RenderMode="Block" UpdateMode="Conditional">
            <ContentTemplate>
                <div><table><tbody><tr><td>
                <label>Search</label><asp:TextBox ID="Search" runat="server"  />
                <asp:LinkButton runat="server" OnClick="find_Click" >Find</asp:LinkButton>
                </td></tr></tbody></table></div>
                <div id="a"><table><tbody><tr><td>
                <label>Result</label><asp:TextBox ID="Result" runat="server" />
                </td></tr></tbody></table></div>       
            </ContentTemplate>
        </asp:UpdatePanel>

当您单击link按钮时,我希望在结果中看到
部分,但文本框中有文本“oranges”。实际得到的是带有“橙子”的
,后面是带有空文本框的原始
。最糟糕的一点是,在这个简单的示例中,它没有做到这一点,甚至在我创建的页面中,也没有做到这一点,该页面包含所有原始的
asp:TextBox
asp:ListBox
,但填充了虚拟数据。有谁能告诉我解决这个问题的好方法吗?

您可能已经尝试过这个方法,但是在实际问题页面中,是否可以从updatepanel中删除尽可能多的服务器控件,然后只保留在有问题的文本框中,然后看看会发生什么?我猜您可能需要注释掉大量的.cs/.vb代码,这可能会让人感到痛苦


还可以尝试删除updatepanel,看看会发生什么。

您可能已经尝试过了,但在“实际问题”页面中,是否可以从updatepanel中删除尽可能多的服务器控件,然后只保留有问题的文本框,然后看看会发生什么?我猜您可能需要注释掉大量的.cs/.vb代码,这可能会让人感到痛苦


还可以尝试删除updatepanel,看看会发生什么。

稍后进行了一些严重的重构,现在看起来(非常臃肿的版本)是这样的


搜寻
发现
结果

经过一些严重的重构之后,它现在看起来(非常臃肿的版本)是这样的


搜寻
发现
结果

另一个解决方案是确保
asp:UpdatePanel
中的所有HTML标记都已关闭。在我的例子中,我在
Site.Master
文件(UpdatePanel控件之外)中放置了open
header
标记,在UpdatePanel控件(在
aspx
页面)中放置了closing header标记。因此,每次UpdatePanel回发时,它都会再次创建结束标头标记,从而导致内容重复。在我将结束标记放入Site.Master文件后,一切都进行得很顺利。

另一个解决方案是确保所有HTML标记在
asp:UpdatePanel
中都已关闭。在我的例子中,我在
Site.Master
文件(UpdatePanel控件之外)中放置了open
header
标记,在UpdatePanel控件(在
aspx
页面)中放置了closing header标记。因此,每次UpdatePanel回发时,它都会再次创建结束标头标记,从而导致内容重复。在我将结束标记放入Site.Master文件后,一切都运行得很好。

是的,这是一个痛苦:)我把它全部拆开,然后在更新面板中用更少的东西重建了它很好,那么,如果我可以问一下,问题出在哪里?是的,这是一个痛苦:)我把它拆开,然后在更新面板中用更少的东西重建了它很好,那又怎么样,如果我可以问,问题出在哪里?在我的例子中,我有2个没有相应的开始标记在我的例子中,我有2个没有相应的开始标记
public void find_Click(Object sender, EventArgs e)
{
    Result.Text = "oranges";
}
<div><table><tbody><tr><td>
<label>Search</label><asp:TextBox ID="Search" runat="server"  />
<asp:LinkButton runat="server" OnClick="find_Click" >Find</asp:LinkButton>
</td></tr></tbody></table></div>
<asp:UpdatePanel runat="server" ChildrenAsTriggers="true" RenderMode="Block" UpdateMode="Conditional">
            <ContentTemplate>
                <div id="a"><table><tbody><tr><td>
                <label>Result</label><asp:TextBox ID="Result" runat="server" />
                </td></tr></tbody></table></div>       
            </ContentTemplate>
        </asp:UpdatePanel>