惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
Forbes - Security
Forbes - Security
WordPress大学
WordPress大学
P
Proofpoint News Feed
T
Threat Research - Cisco Blogs
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
Spread Privacy
Spread Privacy
D
Darknet – Hacking Tools, Hacker News & Cyber Security
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
P
Privacy International News Feed
A
About on SuperTechFans
T
Tailwind CSS Blog
I
InfoQ
S
Securelist
云风的 BLOG
云风的 BLOG
罗磊的独立博客
Recent Announcements
Recent Announcements
T
The Exploit Database - CXSecurity.com
B
Blog RSS Feed
V
Visual Studio Blog
Know Your Adversary
Know Your Adversary
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
腾讯CDC
Cyberwarzone
Cyberwarzone
有赞技术团队
有赞技术团队
AWS News Blog
AWS News Blog
博客园 - 【当耐特】
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
F
Full Disclosure
S
Secure Thoughts
博客园 - 司徒正美
J
Java Code Geeks
Y
Y Combinator Blog
Google Online Security Blog
Google Online Security Blog
GbyAI
GbyAI
N
News and Events Feed by Topic
Help Net Security
Help Net Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Project Zero
Project Zero
T
Tenable Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Tor Project blog
MyScale Blog
MyScale Blog
Scott Helme
Scott Helme
小众软件
小众软件
K
Kaspersky official blog

博客园 - 一碗豆芽汤(OneV)

C#一些基础知识回顾 2021年立个Flag,回顾十多年来的IT职业之路-----没事瞎BB 使用 Visual Studio 创建 .NET 5 控制台应用程序 log4net将日志进行分类,保存到不同的目录当中 .net 使用PowerShell获取电脑中的UUID C# 全角符号转半角 微信开发第二篇:工具篇 微信开发第一篇:问题篇 [转载]ODAC (odp.net) 开发到部署 【项目开发】LigerUI+MVC的应用 VS中两个常用辅助工具 sqlite中常见的问题总结 第1次做面试官的随谈(二) 第1次做面试官的随谈(一) 转,有用 [转载收录]ASP.NET 2.0加密Web.config - 一碗豆芽汤(OneV) - 博客园 关于重构之Switch的处理【二】 - 一碗豆芽汤(OneV) - 博客园 重构的例子 关于重构之Switch的处理【一】如果是有序的话,如何处理
.Net MVC中访问PC网页时,自动切换到移动端对应页面
一碗豆芽汤(OneV) · 2016-03-03 · via 博客园 - 一碗豆芽汤(OneV)

       随着移动端的流行,越来越的网站,除了提供PC网页之外,也提供了移动端的H5页面,手机在访问www.xxx.com的时候,能自动跳转到mobile.xxx.com。网上很多在实现时也能使用JS直接进行跳转,除了JS之外,你还可以使用MVC的后端代码直接实现

一、核心代码

HttpContext.Current.Request.Browser.IsMobileDevice

二、如何使用 ?

  方法一:

     在首页访问Controller代码最前面直接增加核心代码进行判断

public ActionResult Index()
        {
            if (IsMobile())
            {
                return Redirect("mobile.xxx.com");
            }
            return View();
        }
       
        public static bool IsMobile()
        {
            if (System.Web.HttpContext.Current.Request.Browser.IsMobileDevice)
                return true;

            return false;
        }

  方法二

      继承AuthorizeAttribute,增加自定义Attribute

public class RedirectMobileDevicesToMobileAreaAttribute : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
        {
            RouteData rData = httpContext.Request.RequestContext.RouteData;
            //判断,如果是页面手工点击的【电脑版】,则不进行跳转
            string customChange = (rData.Values["id"] ?? "").ToString();
            if (!string.IsNullOrWhiteSpace(customChange))
            {
                return true;

            }
            if (!httpContext.Session.IsNewSession)
                return true;

            if (!httpContext.Request.Browser.IsMobileDevice)
                return true;

            if (Regex.IsMatch(httpContext.Request.Url.PathAndQuery, "/Mobile($|/)"))
                return true;
            return false;
        }

        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            var redirectionRouteValues = GetRedirectionRouteValues(filterContext.RequestContext);
            filterContext.Result = new RedirectToRouteResult(redirectionRouteValues);
        }
        
        protected virtual RouteValueDictionary GetRedirectionRouteValues(RequestContext requestContext)
        {
            return new RouteValueDictionary(new { area = "Mobile", controller = requestContext.RouteData.Values["controller"], action = requestContext.RouteData.Values["action"] });
        }
    }

在需要跳转的地方增加

[RedirectMobileDevicesToMobileArea]
[RedirectMobileDevicesToMobileArea]
public ActionResult Index()
        {
            //if (IsMobile())
            //{
            //    return Redirect("mobile.xxx.com");
            //}
            return View();
        }

附源代下载:点击访问