【问题标题】:viewState lost when you click the back button on your browser当您单击浏览器上的后退按钮时 viewState 丢失
【发布时间】:2016-02-25 12:41:46
【问题描述】:

首先我想忽略我糟糕的英语,因为我正在接受谷歌翻译的帮助;

我正在处理包含相同 N 个 div 的程序集页面的报告,并且一个 div 由 UpdatePanel 处理,如下例所示:

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。我试图实现

但是,使用请求页面最终会给出回发,并且没有处理必要的表单。我在互联网上找到了许多案例,没有针对此案例的更多相关解决方案。我想知道我们如何克服这个障碍。

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

【问题讨论】:

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


    【解决方案1】:

    尝试在页面级别启用视图状态,在页面标题上添加 EnableViewState="false"

    【讨论】:

    • 不幸的是,同样的方式也会丢失数据,但是即使在自己的页面回发中也会发生丢失。
    • 您是否在网络场上运行该网站?
    猜你喜欢
    • 1970-01-01
    • 2016-12-25
    • 2011-08-30
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多