【问题标题】:How to move asp.net page to top in c#如何在c#中将asp.net页面移动到顶部
【发布时间】:2014-12-11 17:34:38
【问题描述】:

如果最终用户向下滚动页面,我想通过单击按钮将页面移回顶部。用户单击按钮,我进行验证。错误消息位于页面顶部,按钮位于页面底部。如果某些内容无效,那么我想将用户滚动回页面顶部,以便他们可以看到错误消息。

我该怎么做?我不想使用 java-script,除非我必须这样做。从后面的代码中可以在 C# 中执行此操作吗?

我试过这个:

ScriptManager.RegisterStartupScript(Page, this.GetType(), "ScrollPage", "scrollToTop();", true);

在运行时出现错误:0x800a1391 - JavaScript 运行时错误:'scrollToTop' 未定义

【问题讨论】:

  • 为什么需要滚动到顶部,如果用户需要向下滚动,这是糟糕的用户体验,或者您可能需要解释更多内容以了解您的要求!
  • 内容会不一样吗?如果不是往返服务器不是这样做的方法,那么 JavaScript/html 是
  • @ArindamNayak 我更新了我的问题
  • 为什么不把验证放在一个固定的 div (position: fixed) 中?这样您就不必滚动查看它。

标签: c# asp.net visual-studio-2013 webforms code-behind


【解决方案1】:

您可以更改代码隐藏以使用以下内容。

ScriptManager.RegisterStartupScript(Page, this.GetType(), "ScrollPage", "window.scroll(0,0);", true);

这里window.scroll(x,y) 表示滚动的位置(x-cord,y-cord)。我用 0,0 滚动到顶部。

你曾经使用过scrollToTop,要使用你需要在aspx中有这个功能,或者使用我的。

有关更多信息,请参阅此 - http://www.w3schools.com/jsref/met_win_scrollto.asp

更新

由于 OP 使用updatepanel,我有一个建议可以达到同样的效果。下面使用。我已经推荐了this

<script type="text/javascript" language="javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    function EndRequestHandler(sender, args)
    {
       scrollTo(0,0);
    }
</script>

【讨论】:

  • @nate 如果您看到任何 javascript 错误,请发布,其他浏览器怎么样?
  • 我确实在我的问题中发布了错误:在运行时我收到错误:0x800a1391 - JavaScript 运行时错误:'scrollToTop' 未定义
  • @nate ,我在问,如果你使用我的解决方案,你会出错吗? -- 如果你清楚地检查,我没有在我的解决方案中使用scrollToTop
  • 我使用你的代码时 JavaScript 没有错误
  • @nate ,所以我的假设是,它对你有用。它的意思是,如果页面完全呈现,没有滚动条,那么它不会滚动任何东西,因为没有任何东西可以滚动。
【解决方案2】:

您可以在页面指令中尝试以下操作

或者在后面的代码中可以这样写:

Page.MaintainScrollPositionOnPostBack = false;

如果您收到异步回帖,请参阅以下帖子:

Scroll to top of page after ASP.Net Ajax Async-Postback without JQuery

【讨论】:

  • 我看腻了,还是不能滚动到顶部
【解决方案3】:

您甚至不需要 C#。你可以只用 HTML 来做到这一点:

<button type="button" formaction="yoursite.com#top">Click me</button>

【讨论】:

  • 我厌倦了这个,但它没有让我的页面回到顶部
【解决方案4】:

虽然您不想使用 JavaScript,但您仍可以考虑在视图上使用 Asp.Net 元素的 OnClientClick="" 属性,以便您的业务逻辑仍然可以使用 OnClick="" 属性。

<asp:LinkButton ID="LinkButton1" OnClientClick="javascript:scroll(0,0);" OnClick="btnNextPage_Click" class="generic-button" runat="server">

这只是将滚动返回到页面的最顶部。 如果你想要一个漂亮的动画,你必须包含并使用一个 JavaScript 库,比如 jQuery 和一个相关的函数。

【讨论】:

    【解决方案5】:

    我无法让上述任何一项为我工作。

    我的场景:我在 MultiView 中嵌入了一个 GridView。用户单击 GridView 上的某些内容,它将视图切换到与单击的内容相关的输出。浏览器会尝试在输出中与单击的行保持相同的位置,这将是页面的一部分,或者一直向下。

    我尝试运行 Javascript 以滚动到该行按钮的单击事件的顶部。那行得通..但在切换到新视图之前,它立即向下滚动。

    我最终尝试了这个,它有效。我在切换视图并呈现内容后运行它。

    Page.ClientScript.RegisterStartupScript(Me.GetType, "scrollKey", "scrollTo(0, 0);", True)
    

    当我返回到原始视图时,我担心我会再次位于页面的顶部,但是浏览器会滚动回 GridView 上的原始位置,这真是太棒了。

    【讨论】:

      【解决方案6】:

      我用 javascript 为我的 asp.net c# 项目做这件事。当您位于页面顶部时,“滚动到顶部”按钮将被隐藏。您可以使用其他图像/颜色/位置更改按钮样式。

      我将在这里分享所有代码。你可以拜访 https://techaid24.com/scroll-to-top-button-aspx/

      如果遇到问题,可以在这里cmet。

      【讨论】:

        猜你喜欢
        • 2021-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-06
        • 2022-12-09
        • 2023-03-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多