C# ASP.NET单选按钮状态和返回键
我有一个带有两个单选按钮的ASP.NET页面。这些按钮使用自动回发来运行服务器端逻辑。如果选择第二个按钮,页面将发回并正确显示已选择第二个按钮的消息。如果现在单击“浏览器后退”按钮,则按钮2的状态将保持选中状态,而消息将恢复为“按钮1已选中”。这会导致明显不希望出现的情况,因为单选按钮和消息的状态现在不同步。我知道这是一个缓存问题,但我觉得奇怪的是浏览器会记住标签的前一个状态,而不是单选按钮的前一个状态 处理这种情况的最佳方法是什么?在这种情况下,禁用缓存或使用“后退”按钮是不可取的 以下代码示例展示了此行为: [表格:]C# ASP.NET单选按钮状态和返回键,c#,asp.net,webforms,radio-button,C#,Asp.net,Webforms,Radio Button,我有一个带有两个单选按钮的ASP.NET页面。这些按钮使用自动回发来运行服务器端逻辑。如果选择第二个按钮,页面将发回并正确显示已选择第二个按钮的消息。如果现在单击“浏览器后退”按钮,则按钮2的状态将保持选中状态,而消息将恢复为“按钮1已选中”。这会导致明显不希望出现的情况,因为单选按钮和消息的状态现在不同步。我知道这是一个缓存问题,但我觉得奇怪的是浏览器会记住标签的前一个状态,而不是单选按钮的前一个状态 处理这种情况的最佳方法是什么?在这种情况下,禁用缓存或使用“后退”按钮是不可取的 以下代码示
<asp:RadioButton ID="rb1" runat="server" AutoPostBack="true" Text="Button1" OnCheckedChanged="rb_CheckedChanged"
GroupName="rbgroup" Checked="true" />
<br />
<asp:RadioButton ID="rb2" runat="server" AutoPostBack="true" Text="Button2" OnCheckedChanged="rb_CheckedChanged"
GroupName="rbgroup" />
<br />
<hr />
<asp:Label ID="lbl1" runat="server">Button 1</asp:Label>
嗯,真有趣
我可以复制这个。让我惊讶的是,源(浏览器的查看源)显示了正确的单选按钮(按钮1)。浏览器(我测试过IE和FF)似乎没有正确呈现源代码(或者没有重新绘制单选按钮;或者没有显示正确的源代码)
现在,后退按钮有点棘手。主要是因为你对此无能为力。。。HTTP现在和将来都是无状态的,客户端上的“后退”按钮离web服务器“很远”。你无法控制它
作为一篇关于类似主题的文章,你可以阅读
我想说的是,尽管我不明白为什么浏览器呈现的内容似乎与消息来源所说的有所不同,但我担心您在这场战斗中正在输掉一场战斗
我目前唯一能想到的就是找到一些我无法提供的智能JavaScript,在用户点击后退按钮后,它可以“做点什么”让浏览器重新绘制屏幕。w我们的问题非常简单
if(!IsPostBack)
{
rb1.Checked = false;
rb2.Checked = false;
//or alternatively set the value from server data
}
if(!IsPostBack)
{
rb1.Checked = false;
rb2.Checked = false;
//or alternatively set the value from server data
}