本当に簡単な問題だと思っていた問題に行き詰まっています。UserAgent に一連の文字列が含まれていない場合、ユーザーを別の Web サイトにリダイレクトしようとしています。私が理解できない部分は、以下のコードを使用すると if ステートメントが正常に機能することです。この結果には満足していますが、else ステートメントだけを使用して、ステートメントが true であることが証明された場合に何も実行しないのは良い習慣ではないことがわかりました。
string strUserAgent = Request.UserAgent.ToString().ToLower();
if (strUserAgent != null)
{
if (Request.Browser.IsMobileDevice == true ||
strUserAgent.Contains("iphone") ||
strUserAgent.Contains("blackberry") ||
strUserAgent.Contains("mobile") ||
strUserAgent.Contains("windows ce") ||
strUserAgent.Contains("opera mini") ||
strUserAgent.Contains("palm") ||
strUserAgent.Contains("android"))
{
// Is this normal practice to only have an else block?
}else
{
Response.Redirect(AppState["redirectBack"].ToString());
}
次のコード ブロックを試すと、UserAgent 文字列の内容に関係なく、スクリプトはユーザーをリダイレクトします。誰かがなぜこれが起こっているのか説明できますか?
string strUserAgent = Request.UserAgent.ToString().ToLower();
if (strUserAgent != null)
{
if (Request.Browser.IsMobileDevice != true ||
!strUserAgent.Contains("iphone") ||
!strUserAgent.Contains("blackberry") ||
!strUserAgent.Contains("mobile") ||
!strUserAgent.Contains("windows ce") ||
!strUserAgent.Contains("opera mini") ||
!strUserAgent.Contains("palm") ||
!strUserAgent.Contains("android"))
{
Response.Redirect(AppState["redirectBack"].ToString());
}