2012-01-27 35 views
6

我有以下的代碼讀取的userAgent和不使用的indexOf基於匹配值有一些邏輯:閱讀與C#的userAgent

String userAgent; 
userAgent = Request.UserAgent; 
// If it's not IE 
if (userAgent.IndexOf("MSIE") < 0) 
{ 
    return RedirectToAction("Index", "Home", new { area = "Dashboard" }); 
} 
// If it's IE BUT ChromeFrame 
else if(userAgent.IndexOf("ChromeFrame") > -1) 
{ 
    return RedirectToAction("Index", "Home", new { area = "Dashboard" }); 
} 
// It's just IE 
else 
{ 
    return View("ChromeFrame"); 
} 

如果它的IE瀏覽器,那麼它應該返回視圖,或者如果它的IE瀏覽器,但包含ChromeFrame,那麼它應該重定向,它是另一個瀏覽器,那麼它也應該重定向。

我認爲問題出在> 0部分代碼。什麼是比較信息的正確方法?謝謝。

+0

你不應該改變代碼的方式,你已經得到的答案不再適用...... – Yahia 2012-01-27 10:29:56

回答

1

您應該使用> -1,否則如果子字符串位於字符串的開頭,則不起作用。

1

IndexOf如果未找到字符串,則返回-1 ...請參閱MSDN以供參考。

7

只需使用contains method,這將使您的代碼更加隱蔽並且不易出錯。

if (userAgent.Contains("MSIE")) 
{ 
    return RedirectToAction("Index", "Home", new { area = "Dashboard" }); 
}