私は、Asp.Netにはまだかなり新しい、機能する方法を思いついたので、他の人の考えに興味があります。
編集:ブラウザにNoScriptがあるかどうかを記憶する一時的な(セッションのみの)Cookieを導入することでアイデアを拡張したので、同じページにリダイレクトし続ける必要はありません。次にページがリクエストされたときにそのブール値を使用するだけです。 。
私はマスターページの先頭でこれを行いました:
<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クエリ値を各リクエストに渡すユーティリティも役立つと思います。そうでない場合は、リクエストごとに同じページに継続的にリダイレクトされます。