单击浏览器上的后退按钮时viewState丢失

时间:2016-02-25 12:41:47

标签: c# asp.net .net vb.net ajaxcontroltoolkit

首先,我想忽视我的英语不好,因为我正在帮助谷歌翻译;

我正在处理包含相同N div的汇编页面的报告,并且使用UpdatePanel处理div,如下例所示:

asp:ScriptManager EnablePartialRendering="true" ID="ScpManager" runat="server" EnableHistory="true">
</asp:ScriptManager>
<asp:UpdatePanel ID="updProcesso" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnAcima" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="btnAbaixo" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="btnSelecionar" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="btnDesfazer" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="btnMudaOrdem" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="btnMudaOperacao" EventName="Click" />
    </Triggers>
    <ContentTemplate>
        <table>
            <tr>
                <td>
                    Campos Disponíveis
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <asp:ListBox ID="lstOrigem" CssClass="DropDownlist" runat="server" Height="200px"
                        Width="250px" SelectionMode="Multiple"></asp:ListBox>
                </td>
                <td>
                    <asp:Button ID="btnAcima" CssClass="Botao" runat="server" Text="Mover para Cima"
                        Width="110px" /><br />
                    <br />
                    <asp:Button ID="btnAbaixo" CssClass="Botao" runat="server" Text="Mover para Baixo"
                        Width="110px" /><br />
                    <br />
                    <asp:Button ID="btnSelecionar" CssClass="Botao" runat="server" Text="Selecionar"
                        Width="110px" /><br />
                    <br />
                    <asp:Button ID="btnDesfazer" CssClass="Botao" runat="server" Text="Desfazer Seleção"
                        Width="110px" />
                </td>
            </tr>
        </table>
        <table>
            <tr>
                <td>
                    Campos Selecionados
                </td>
                <td>
                    Ordem
                </td>
                <td>
                </td>
                <td>
                    Operação
                </td>
            </tr>
            <tr>
                <td>
                    <asp:ListBox ID="lstDestino" CssClass="DropDownlist" runat="server" Height="200px"
                        Width="250px" SelectionMode="Multiple"></asp:ListBox>
                </td>
                <td>
                    <asp:ListBox ID="lstOrdem" CssClass="DropDownlist" runat="server" Height="200px"
                        Width="50px"></asp:ListBox>
                </td>
                <td valign="top">
                    <asp:Button ID="btnMudaOrdem" CssClass="Botao" runat="server" Text="Mudar Ordem"
                        Width="95px" />
                </td>
                <td>
                    <asp:ListBox ID="lstOperacao" CssClass="DropDownlist" runat="server" Height="200px"
                        Width="115px"></asp:ListBox>
                </td>
                <td valign="top">
                    <asp:Button ID="btnMudaOperacao" CssClass="Botao" runat="server" Text="Mudar Operação"
                        Width="110px" />
                </td>
            </tr>
            <tr>
                <td colspan="3">
                </td>
            </tr>
        </table>
    </ContentTemplate>
</asp:UpdatePanel>

我发现一个很大的问题是,当有一个重定向到生成报告的页面并点击浏览器本身的背面时,所有参数都会丢失到同一个非操纵的UpdatePanel,setados生成那个报告。在我看来是viewState的丢失。我试图实现

但是,使用“请求”页面最终会提供回发,并且不会被操纵必要的表单。我在互联网上发现了很多案例,对于这种情况没有更多相关的解决方案。我想知道如何克服这个障碍。

知道在另一个带有参数的页面上实现后退按钮的选项不是正确的解决方案,因为它不会阻止用户回到浏览器本身。

1 个答案:

答案 0 :(得分:0)

尝试在页面级别启用viewstate,在页眉上添加此EnableViewState="false"