刷新后选中ASP复选框
本文关键字:ASP 复选框 刷新 | 更新日期: 2023-09-27 17:49:33
所以基本上我有一个ASP复选框处理自动刷新。如果选中,则页面每隔5分钟刷新一次,如果未选中,则不刷新
我得到的问题,当我取消复选框的页面仍然刷新5分钟后,即使它不应该。
复选框的ASP <asp:CheckBox ID="chkAutoRefresh" runat="server" AutoPostBack="True" style="position:absolute; top: 48px; left: 908px; height: 6px; font-family: Arial, Helvetica, sans-serif; font-size: 11px; right: 219px;"
Checked="true" Text="Auto refresh" />
呼叫
<meta http-equiv="refresh" content="<%= GetRefreshTime() %>"/>
这是
后面的代码 protected string GetRefreshTime()
{
if (chkAutoRefresh.Checked)
{
return ConfigurationSettings.AppSettings["AutoRefreshTime"]; //refresh for every 5 min
}
else
{
return string.Empty; //if not checked do not refresh
}
}
我哪里错了?
您在这里缺少的是使用元刷新您的整个页面正在被重新加载。关于复选框的数据,无论是否选中,都会丢失(ViewState清空)。
你应该做的是将复选框选中的数据保存在一些更持久的状态,通过重载保持,例如Session对象。
然后总是使用来自Session的值(当然,如果用户改变了复选框的值,也要改变Session中的值)。
例子HTML:<asp:CheckBox OnCheckedChanged="chkAutoRefresh_CheckedChanged" ID="chkAutoRefresh" runat="server" AutoPostBack="True" Text="Auto refresh" />
背后的代码:
protected void Page_Load(object sender, EventArgs e)
{
// on every "first" page load which is also every refresh through meta refresh tag
// this one will not be executed when we click checkbox which is a true postback
if (!IsPostBack)
{
Response.Write("Refreshed! " + DateTime.Now);
AutoRefreshSite();
}
}
protected void chkAutoRefresh_CheckedChanged(object sender, EventArgs e)
{
// store value into session
Session["autorefresh"] = chkAutoRefresh.Checked;
// call method where you enable/disable auto refresh
AutoRefreshSite();
}
protected void AutoRefreshSite()
{
if (Session["autorefresh"] != null)
{
// append meta refresh tag
if (bool.Parse(Session["autorefresh"].ToString()))
{
HtmlMeta tag = new HtmlMeta();
tag.HttpEquiv = "refresh";
tag.Content = "5";
Header.Controls.Add(tag);
chkAutoRefresh.Checked = true;
}
}
}
不能使用<%= GetRefreshTime() %>
设置<meta>
标签的内容
所以在这种情况下,你可以使用HtmlMeta对象从Code-Bihide写标签。
protected void chkAutoRefresh_CheckedChanged(object sender, EventArgs e)
{
HtmlMeta tag = new HtmlMeta();
tag.HttpEquiv = "refresh";
if (chkAutoRefresh.Checked)
{
tag.Content = "your content";
}
else
{
tag.Content = "";
}
Header.Controls.Add(tag);
}
希望它能正常工作。:)