所以基本上我有一个处理自动刷新的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
}
}
我哪里错了?
答案 0 :(得分:0)
您无法使用<%= 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);
}
希望它能正常工作。 :)
答案 1 :(得分:0)
您在这里缺少的是使用元刷新,您的整个页面正在重新加载。有关复选框的数据(如果已选中或未选中)将丢失(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;
}
}
}