我想出了一个可行的方法,对于 Asp.Net 来说还是很新的,所以我对其他人的想法很感兴趣。
编辑:我通过引入一个临时(仅限会话)cookie 来扩展这个想法,该 cookie 会记住浏览器是否有 NoScript,因此我们不必一直重定向到同一页面,我们只需在下次请求页面时使用该布尔值.
我在母版页的头部做了这个:
<noscript>
<%# NoScriptPlaceHolder %>
</noscript>
在 TabContainer 的Visible="<%# !NoJavascript %>"
属性中。
然后在 CodeBehind 中:
protected bool NoJavascript
{
get
{
TempCookie cookie = new TempCookie(); // session only cookie
if (cookie.NoJavascript) return true;
bool noJavascript = !string.IsNullOrEmpty(Request["noscript"]);
if (noJavascript)
cookie.NoJavascript = noJavascript;
return noJavascript;
}
}
protected string NoScriptPlaceHolder
{
get
{
if (NoJavascript)
return string.Empty;
string url = Request.Url.ToString();
string adv = "?";
if (url.Contains('?'))
adv = "&";
string meta = string.Format("<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL={0}{1}noscript=true\">",
url, adv);
return meta;
}
}
还有其他想法吗?
未来的想法:如果他们没有启用 Cookie,我想将 noscript 查询值传递给每个请求的实用程序也会有所帮助,否则他们将在每个请求上不断地重定向到同一页面。