In this article I will explain with an example, how to detect mobile phone browser (mobile device) in ASP.Net MVC Razor.
With the help of Regular Expressions (Regex), one can easily detect and find whether the User is using a Desktop browser or mobile phone browser (mobile device) in ASP.Net MVC Razor.
Regular Expression for Detecting Mobile Browsers (Mobile Devices)
The following site provides a great Regular Expression which can be used easily in ASP.Net MVC for detecting mobile phone browsers (mobile devices).
Note: The above website updates their Regular Expression periodically and hence you must visit the site every few months and get the updated Regular Expression so that your website can detect the new launched mobile phone devices.
Detecting Mobile Phone Browser (Mobile Device) using ASP.Net MVC
ASP.Net does have in-built mobile phone browser detection capabilities and you can check whether user is using a Mobile phone browser or Desktop browser using the Request.Browser.IsMobileDevice property.
I tried it using my Samsung Galaxy Note 8, but it did not detect it as a Mobile device, it might be because every now and then new mobile phone devices are being launched.
Namespaces
You will need to import the following namespace.
C#
using System.Text.RegularExpressions;
Controller
The Controller consists of the following Action method.
Each browser sends its information to the server using the HTTP_USER_AGENT server variable. The value of the User Agent variable is matched with two Regular Expressions. And if one of the two Regular Expressions founds a match then it confirms that user is using a mobile phone browser (mobile device).
If the match is found, the information of the mobile phone browser (mobile device) is fetched from Regular Expression’s Group values and is set into a ViewBag object which will be later displayed in the View.
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
string userAgent = Request.ServerVariables["HTTP_USER_AGENT"];
Regex OS = new Regex(@"(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Regex device = new Regex(@"1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-", RegexOptions.IgnoreCase | RegexOptions.Multiline);
string device_info = string.Empty;
if (OS.IsMatch(userAgent))
{
device_info = OS.Match(userAgent).Groups[0].Value;
}
if (device.IsMatch(userAgent.Substring(0, 4)))
{
device_info += device.Match(userAgent).Groups[0].Value;
}
if (!string.IsNullOrEmpty(device_info))
{
ViewBag.DeviceInfo = "You are using a Mobile device. " + device_info;
}
else
{
ViewBag.DeviceInfo = "You are using a Desktop device.";
}
return View();
}
}
View
The View consists of an HTML SPAN element inside which the ViewBag object is being displayed.
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width"/>
<title>Index</title>
</head>
<body>
<span>@ViewBag.DeviceInfo</span>
</body>
</html>
Screenshot
Downloads