2013-02-13 17 views
10
if (Request.Browser.IsMobileDevice) 
{ 
    Response.Redirect("/mobile/Login.htm");` 
} 

मोबाइल का पता लगाने के लिए, लेकिन मोबाइल फोन की तरह टैबलेट का पता लगाने के लिए, मुझे फ़ंक्शन की आवश्यकता होती है जो जांचता है कि डिवाइस की स्क्रीन के आकार की जांच करने वाले टैबलेट या फ़ंक्शन।टैबलेट (किसी भी) अनुरोधों का पता कैसे लगाएं?

धन्यवाद "रों कि काम मैं इस्तेमाल किया ScreenPixelsWidth और ScreenPixelsHeight इस यदि कोई जरूरत कोड है यह

int wight = Request.Browser.ScreenPixelsWidth; 
       int height = Request.Browser.ScreenPixelsHeight; 

       if (Request.Browser.IsMobileDevice && wight < 720 && height<1280) 
      { 
       Response.Redirect("/mobile/Login.htm"); 
      } 
+1

मैंने आपका शीर्षक संपादित किया है। कृपया देखें, "[प्रश्नों में उनके शीर्षक में" टैग "शामिल होना चाहिए?] (Http://meta.stackexchange.com/questions/19190/)", जहां आम सहमति है "नहीं, उन्हें नहीं करना चाहिए"। –

+0

@acb यह लिंक इस मामले में लागू नहीं होता है। यह एक ब्राउज़र है जिसके बारे में हम बात कर रहे हैं। – Icarus

उत्तर

7

आप ScreenPixelsWidth और ScreenPixelsHeight (http://msdn.microsoft.com/en-us/library/system.web.httpbrowsercapabilities.aspx) का उपयोग कर सकते हैं और आप एक सीमा है जिसमें आप ध्यान में रखना परिभाषित कर सकते हैं नियमित रूप से या मोबाइल संस्करण रेंडर किया जाना चाहिए।

वहाँ कई और अधिक तरीकों को इस मुद्दे से निपटने के लिए कर रहे हैं लेकिन जब से आप पहले से ही HttpBrowserCapabilities वर्ग का उपयोग कर रहे हैं, आप चाहें तो इन 2 गुणों का उपयोग हो सकता है।

+1

धन्यवाद "रों कि काम मैं इस्तेमाल किया ScreenPixelsWidth और ScreenPixelsHeight इस कोड को यदि कोई इसकी जरूरत' पूर्णांक वाइट = Request.Browser.ScreenPixelsWidth है, पूर्णांक ऊंचाई = Request.Browser.ScreenPixelsHeight; अगर (Request.Browser.IsMobileDevice && वाइट <720 && ऊंचाई <1280) { Response.Redirect ("/ mobile/login.htm"); } ' –

+0

@VovaPotapov उत्कृष्ट। पढ़ने के लिए खुशी आपके लिए काम कर रही है। – Icarus

+0

मुझे लगता है कि एजेंट स्ट्रिंग से बेहतर तरीके से पकड़ता है पैटर्न मिलान। –

19

मैं ने वही समस्या थी और उपयोग करने की कोशिश: HttpContext.Request.Browser.ScreenPixelsWidth

हालांकि यह हमेशा डिवाइस (iPhone या iPad) की परवाह किए बिना 640 पिक्सल के एक मान दिया। मैंने इसके बजाए उपयोगकर्ता एजेंट स्ट्रिंग का निरीक्षण करने के लिए एक स्थिर विधि बनाकर इस मुद्दे को हल किया।

public class DeviceHelper 
{ 
    public static bool IsTablet(string userAgent, bool isMobile) 
    { 
     Regex r = new Regex("ipad|android|android 3.0|xoom|sch-i800|playbook|tablet|kindle|nexus"); 
     bool isTablet = r.IsMatch(userAgent) && isMobile; 
     return isTablet; 
    } 
} 

तब मेरे नियंत्रक में:

if(DeviceHelper.IsTablet(Request.UserAgent, Request.Browser.IsMobileDevice)) 
    return Redirect("..."); // redirect to tablet url 
+0

क्या इसका मतलब यह है कि 'Request.Browser.IsMobileDevice' दोनों फोन और टैबलेट के लिए सच है? –

+2

@IanCampbell हां, क्योंकि आप उन्हें दोनों हाथों में ले जा सकते हैं! अधिक संभावना है कि एमएस इसे एक्सटेंशन तक छोड़ दें [51Degrees .mobi] (https://www.nuget.org/packages/51Degrees.mobi) स्लैक _ लेने के लिए (हालांकि मुझे लगता है कि उस एडन का मुफ्त संस्करण अभी भी मोबाइल के रूप में सब कुछ रिपोर्ट करता है) _ – drzaus

+0

रेगेक्स को तत्काल चालू किया जाना चाहिए रास्ता: 'रेगेक्स आर = नया रेगेक्स ("आईपैड | एंड्रॉइड | एंड्रॉइड 3.0 | xoom | sch-i800 | playbook | tablet | kindle | nexus", ** RegexOptions.IgnoreCase **); –

1

ScreenPixelsWidth हमेशा 640 रिटर्न तो फोन का पता लगाने में उपयोगी नहीं है। मुझे यह काम मिला:

public static bool IsPhoneDevice(this HttpBrowserCapabilitiesBase Browser) 
{ 
     return (Browser.IsMobileDevice && Browser.CanInitiateVoiceCall); 
} 
संबंधित मुद्दे