在第二次回发中丢失大部分页面内容

时间:2010-07-05 10:48:42

标签: asp.net ajax vb.net updatepanel

这很难解释并根据它提供代码。如果您甚至尝试提供帮助,那么现在谢谢

我有一个带有更新面板的表单。这会发布表单并验证它。返回任何无效字段的errorMessage字符串,例如“字段xyz是必填字段,字段abc需要是数量”

当我输入错误的日期时,它会回发正确并在页面底部的div中显示文本,更新面板的目标是更新。 (只有它应该改变)

这样可行,但是我第二次点击说(说我输入两次无效数据),完整表单将会消失,只留下网站的横幅和返回的错误消息。

我已经尝试将整个代码发回评论,以便按钮实际上没有做任何事情,但它仍然有同样的问题(当然这次它不会产生错误信息)

所以我只能认为它与更新面板本身及其工作方式有关,但我已经盯着这个很长时间并且没有更多的想法!

3 个答案:

答案 0 :(得分:1)

如果没有一些示例代码,很难回答这个问题。看看你的代码隐藏对你的页面做了什么,并注意在你的更新面板中,你的回发实际上是一个AJAX回调。您的页面将再次执行,但只重新呈现更新面板的内容,并且只应在客户端更新相同的内容。

通常情况下,当我在第二次或后续回发时遇到问题时,它会在我不想要的情况下运行初始化代码。

我的建议是调查您正在检查if (Page.IsPostback)if (Page.IsCallback)的位置,然后使用这些内容。您可能需要保护处理以下块中的表单的服务器端代码:

if (Page.IsCallback)
{

}

答案 1 :(得分:0)

我发现了这个问题(大约5个小时后),但是不明白。令人反感的更新面板有我在其外面使用的更新面板

    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnTabs" />
    </Triggers>
</asp:UpdatePanel>
<asp:PlaceHolder runat="server" ID="phldActionButtons" />

占位符里面有我正在使用的更新面板的控件。 您可以看到关闭的updatepanel是表单的内容

只需在contenttemplate中移动占位符,它似乎就解决了问题。 (不知道为什么它会隐藏/删除一个只与它有关的整个更新面板,它是它在回发时验证的形式!

答案 2 :(得分:0)

我只是在遇到类似的问题。大约5个小时后,我决定试试这个:

UpdateMode="Conditional"

对于我的UpdatePanel,它停止了导致第二次回发!!!