【问题标题】:ASP.NET: how to stop page from jumping when using AutoPostBack?ASP.NET:使用 AutoPostBack 时如何阻止页面跳转?
【发布时间】:2010-12-15 22:22:44
【问题描述】:

我正在使用 ASP.NET,在向导控件中,我有单选按钮,如果选择“是”,则显示面板,但如果选择“否”,则隐藏面板。我将 MaintainScrollPositionOnPostBack 设置为 True,尽管 ActiveStepChanged 事件将其更改为 False,因此当您单击“下一步”查看下一个向导步骤时,它将从页面顶部开始。问题是,在单击“下一步”后,第一次单击单选按钮时,它会跳到页面顶部(第一次单击单选按钮后,页面将保持其位置)。如何阻止它第一次跳跃?

【问题讨论】:

    标签: asp.net wizard autopostback page-jump maintainscrollpositionon


    【解决方案1】:

    设置Page.MaintainScrollPositionOnPostBack = true 以在回发时保持当前屏幕位置。

    这比尝试通过 JavaScript 或其他任何方式自己做这件事要容易。

    【讨论】:

    • 今天对我很有帮助。谢谢你:)
    【解决方案2】:

    您可以通过将控件放在UpdatePanel 中来阻止页面进行完全刷新

    【讨论】:

    • 还应注意,要使用 asp 更新面板,您需要一个 asp 脚本管理器。每页只允许一个脚本管理器 (msdn.microsoft.com/en-us/library/…)。它将处理所有请求。
    • @mattimus:好点。为此(页面上只能有一个脚本管理器这一事实),请确保您没有将 ScriptManager 放在用户控件中;把它放在一个页面上(因为你可能希望一个页面上有多个 UC)。
    【解决方案3】:

    我知道这个问题已经得到解答,但是我无法在我正在从事的项目中使用 ajax 我遇到了类似的问题,我找到了一个可以接受的解决方法。我在一个也有母版页的页面中有一个用户控件。在用户控件中有一个输入表单,在底部附近有一些触发回发的控件。母版页上的主要内容 div 使其可滚动(因为它太大)。我找到的解决方案是将页面焦点设置为对 c# 代码隐藏中回发触发的事件的控件。 例如:

    protected void cbShip_CheckedChanged(object sender, EventArgs e)    
    {
        if (cbShip.Checked)
        {
            pnlShip.Visible = true;
            Page.SetFocus(ddlShipCountry);
        }
        else
        {
            pnlShip.Visible = false;
        }
        return;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-12-28
      • 2014-07-07
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 2011-11-21
      相关资源
      最近更新 更多