2012-01-27 32 views
6

Tôi có đoạn code sau đây mà đọc UserAgent và làm một số logic dựa trên các giá trị phù hợp sử dụng indexOf:Đọc UserAgent với C#

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"); 
} 

Nếu đó là IE sau đó nó phải trả lại xem hoặc nếu IE của nó nhưng chứa ChromeFrame thì nó sẽ chuyển hướng và đó là một trình duyệt khác thì nó cũng sẽ chuyển hướng.

Tôi nghĩ rằng sự cố xảy ra với phần > 0 của mã. Cách so sánh thông tin chính xác là gì? Cảm ơn.

+0

bạn không nên thay đổi mã theo cách mà các câu trả lời bạn đã nhận không áp dụng nữa ... – Yahia

Trả lời

1

Bạn nên sử dụng > -1 nếu không nó sẽ không hoạt động nếu chuỗi con nằm ở đầu chuỗi.

1

IndexOf trả về -1 nếu không tìm thấy chuỗi ... xem MSDN để tham khảo.

7

Chỉ cần sử dụng contains method, điều này sẽ làm cho mã của bạn ít khó hiểu và ít bị lỗi hơn.

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