2012-01-27 14 views
6

मैं निम्नलिखित कोड जो userAgent पढ़ता है और कुछ मान मेल नहीं खाते के आधार पर तर्क indexOf का उपयोग कर करता है:साथ सी # 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 है, लेकिन इसमें क्रोमफ्रेम है, फिर इसे रीडायरेक्ट करना चाहिए और यह एक और ब्राउज़र है, फिर भी इसे रीडायरेक्ट करना चाहिए।

मुझे लगता है कि समस्या > 0 कोड के साथ है। जानकारी की तुलना करने का सही तरीका क्या है? धन्यवाद।

+0

आपको कोड को इस तरह से नहीं बदलना चाहिए कि आपके द्वारा पहले से प्राप्त उत्तरों को अब लागू नहीं किया गया है ... – Yahia

उत्तर

1

आपको > -1 का उपयोग करना चाहिए अन्यथा यह स्ट्रिंग की शुरुआत में है तो यह काम नहीं करेगा।

1

IndexOf रिटर्न -1 यदि स्ट्रिंग नहीं मिलती है ... संदर्भ के लिए MSDN देखें।

7

बस contains method का उपयोग करें, जो आपके कोड को कम क्रिप्टिक और कम त्रुटि-प्रवण बना देगा।

if (userAgent.Contains("MSIE")) 
{ 
    return RedirectToAction("Index", "Home", new { area = "Dashboard" }); 
} 
संबंधित मुद्दे