【发布时间】:2021-08-13 03:12:48
【问题描述】:
我在网上做了很多研究,并认为这将是一个相当容易解决的问题,但要么我没有正确搜索,要么我错过了答案: 我有一个 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>
【问题讨论】:
-
使用 Ajax 发帖可能吗?
-
上周我遇到了一个问题,但可能会重新考虑......
-
UpdatePanel 将摆脱这个问题。它使用 AJAX 而不是回发。 docs.microsoft.com/en-us/dotnet/api/… 另外,不要将 C# 代码与演示标记混合。把它放在它所属的代码隐藏文件中。