iPhone iPad 未检测到 ASP.Net MVC 应用程序中的浏览器类型
Posted
技术标签:
【中文标题】iPhone iPad 未检测到 ASP.Net MVC 应用程序中的浏览器类型【英文标题】:iPhone iPad Not detecting the browser type in ASP.Net MVC app 【发布时间】:2018-07-20 14:38:23 【问题描述】:我有一个 Web 应用程序,其中有很多 widgests/page。某些小部件在 Safari 中打开时我想阻止,并在有人尝试从 Safari 浏览器打开 web 应用程序时显示某种消息。 下面是我写的代码。
public class BlockFromSafari : System.Web.Mvc.ActionFilterAttribute
// runs just before the action is executed
public override void OnActionExecuting(ActionExecutingContext filterContext)
var browserType = filterContext.HttpContext.Request.Browser.Browser;
base.OnActionExecuting(filterContext);
if (browserType.Contains("Safari"))
// Redirect the user accordingly
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary "controller", "Security" , "action", "Safari" );
请注意,我已将此过滤器应用于我想要的所有操作方法
public ActionResult Safari()
return Content("This is SAFARI!!");
当前行为:
如果我打开网站并访问相应的 URL,在 WindowsPC 中的 Chrome 页面打开正常,就像我在 Windows PC 的 Safari 浏览器中打开一样,我会重定向到“这是SAFARI 内容页面”。
如果我打开网站并访问相应的 URL,则在 Mac PC 中的 Chrome 页面打开正常,就像我在 Mac PC 中的 Safari 浏览器中打开一样,我会被重定向到“这是 SAFARI 内容页面”
到目前为止一切顺利。 现在问题来了
问题:如果我打开网站并访问相应的 URL,在 Mobile device 或 Ipad 的 Chrome 页面中仍然显示“This is SAFARI” 理想情况下,我期望与 PC 中的行为相同。请指导我。
预期行为:
移动设备-Chrome - 应该可以正常打开
Mobeil Devive-Safari - 应该显示“这是 SAFARI”
有趣的阅读 Chrome Treated as Safari
【问题讨论】:
【参考方案1】:所以穿,这篇文章可能会对你有所帮助 https://51degrees.com/blog/mobile-and-tablet-device-detection-with-mvc5
主要思想是从标题中获取浏览器信息,例如:
requestContext.HttpContext.Request.Headers.Profiles.SelectMany(p => p.Values).ToArray();
因此,如果它是移动的,您可以添加另一个条件。
另一种方法是使用 javascript 并在其移动设备上重定向,例如:
var userAgent = window.navigator.userAgent;
if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i))
// iPad or iPhone
else
// Anything else
这是完整的答案(Determine if user navigated from mobile Safari)
【讨论】:
以上是关于iPhone iPad 未检测到 ASP.Net MVC 应用程序中的浏览器类型的主要内容,如果未能解决你的问题,请参考以下文章
Ipad上传的图像在asp.net c#中的所有浏览器中显示桌面旋转90度