c# - 当 MaintainScrollPositionOnPostback 设置为 true 时,回发会导致页面“闪烁”
问题描述
我在网上做了很多研究,并认为这将是一个相当简单的修复,但要么我没有正确搜索,要么我错过了答案:我有一个 aspx 页面和里面的一个小 C#那。我在开关上有一个checkedchanged 事件来隐藏/显示一个文本框。当事件触发时,回发会导致页面转到顶部。我尝试将 MaintainScrollPositionOnPostback 设置为 true,虽然这确实保持了滚动位置,但回发会导致页面“闪烁”并且非常不愉快。我怎样才能隐藏这个过渡,或者最好是消除它。感谢您的考虑。
正如@dave_holden 所建议的那样,我把它放在了一个 UpdatePanel 中,这样就可以了。 (至少在我记得为什么我一开始不使用它之前。:)
<%@ Page Language="C#" AutoEventWireup="true" Inherits="blah" MaintainScrollPositionOnPostback="true" %>
<%@ Import Namespace="System.Windows" %>
<!DOCTYPE html>
<script runat="server">
protected void cbSignator_CheckedChanged(object sender, EventArgs e)
{
if (cbSignator.Checked)
{
tbSignator.Visible = true;
lblSignator.Visible = true;
}
else
{
tbSignator.Visible = false;
lblSignator.Visible = false;
tbSignator.Text = "";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta charset="UTF-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="author" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Request Form</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
</head>
<body>
<form id="Contract" runat="server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<section id="CustomerInfo">
<div class="row" id="customerFields2">
<div class="column">
<label class="switch">
<span class="slider"></span>
</label>
<asp:Label ID="lblSignatory" runat="server" CssClass="labels" Text="Will be signatory?" />
</div>
<div class="column">
<asp:Label ID="lblSignator" runat="server" CssClass="labels" Visible="false" Text="Signator:" />
<asp:TextBox ID="tbSignator" runat="server" class="textboxes" Visible="false" />
</div>
</div>
</section>
</ContentTemplate>
</UpdatePanel>
</form>
</body>
解决方案
正如@dave_holden 所建议的那样,我把它放在了一个 UpdatePanel 中,这样就可以了。(至少在我记得为什么我一开始不使用它之前。:)
推荐阅读
- python - 如何在 Python asyncio 中将新的协同程序添加到已经运行的循环中?
- apache-nifi - Nifi 将 Azure Blob account_name/account_key 存储在一个地方
- sql - 展平重复行 - Oracle SQL
- excel - 不使用选择自动填充
- php - 为什么某些音频文件无法在 Twilio Play 中播放?
- ssl - 客户端无法通过 SSL 连接到 Apache Artemis
- class - 返回 null 的类列表中的字符串
- c# - VS2015 中的所有代码文件都被检出
- reactjs - 根据道具值显示组件反应
- google-cloud-platform - 无法开始在 Web UI 上训练我的 GCP AutoML 实体提取模型