用C#读取userAgent

时间:2012-01-27 10:18:20

标签: c# asp.net-mvc-3

我有以下代码读取userAgent并根据使用indexOf匹配的值执行一些逻辑:

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部分。比较信息的正确方法是什么?感谢。

3 个答案:

答案 0 :(得分:8)

只需使用contains method,这将使您的代码不那么神秘且不易出错。

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

答案 1 :(得分:1)

您应该使用> -1,否则如果子字符串位于字符串的开头,它将无效。

答案 2 :(得分:1)

如果找不到字符串,

IndexOf将返回-1 ...请参阅MSDN以供参考。