взято из шаблона Nuget mvcmobile, средство определения, если мы смотрим на мобильное устройство. Вы можете редактировать / рефакторинг для соответствия:
public static bool IsSupportedMobileDevice(this HttpRequestBase request)
{
bool isMobile = request.Browser.IsMobileDevice;
string userAgent = request.UserAgent.ToLowerInvariant();
isMobile = isMobile
|| (userAgent.Contains("iphone")
|| userAgent.Contains("blackberry")
|| userAgent.Contains("mobile")
|| userAgent.Contains("windows ce")
|| userAgent.Contains("opera mini")
|| userAgent.Contains("palm")
|| userAgent.Contains("fennec")
|| userAgent.Contains("adobeair")
|| userAgent.Contains("ripple")
);
return isMobile;
}
использование в контроллере:
if (Request.IsSupportedMobileDevice()){...}
этот шаблон nuget на самом деле очень полезен, его стоит посмотреть. см:
http://visualstudiogallery.msdn.microsoft.com/9df9c61c-4d90-43e5-9aa1-a58786b7a1e4?SRC=VSIDE
этот шаблон фактически функционирует, создавая переопределение viewengine, когда он обнаруживает мобильное устройство на стороне сервера, тем самым позволяя отображать определенные мобильные представления для мобильных устройств. Я должен сказать, что в моих кратких тестах это работает довольно хорошо.
[править] - для iphone пользовательский агент:
mozilla/5.0 (iphone; u; cpu iphone os 4_0 like mac os x; en-us) applewebkit/532.9 (khtml, like gecko) version/4.0.5 mobile/8a293 safari/6531.22.7
и для типичного андроида:
Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; HTC_DesireS_S510e Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
поэтому вы можете проанализировать строку userAgent и определить местонахождение «версии» (в приведенном выше примере - Android 2.3.3
), так как я на 100% уверен, что она будет постоянной для всех строк userAgent. очевидно, это было бы утомительно для целого ряда «не андроидных» устройств, но, надеюсь, иллюстрирует потенциал.