代码改变世界

DisplayModeProvider完成移动开发自动视图解析

2018-08-10 10:35  huoit  阅读(451)  评论(0)    收藏  举报

MVC中新建视图命名:XXX.cshtml、XXX.mobile.cshtml;用手机访问会自动到xxx.mobile.cshtml

一、原理

MVC中是通过DisplayModeProvider实现View override从而实现自动解析到对应视图页面

默认有两个Mobile和“”,会根据浏览器的User-Agent判断跳转到哪个视图 

也可以使用下面的方式重写,视图命名规则:xxx.DisplayModeName.cshtml则可以实现自动解析到对应的视图

        protected void Application_Start()
        {
           ……
           ……
    
            DisplayModeProvider.Instance.Modes.Insert(0,
                new DefaultDisplayMode("FF")
                {
                    ContextCondition = (context => ((context.GetOverriddenUserAgent() != null) 
&& context.Request.Browser.IsMobileDevice)&&context.GetOverriddenUserAgent().IndexOf ("Firefox", StringComparison.OrdinalIgnoreCase) >= 0)) }); DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("Chrome") { ContextCondition = (context => ((context.GetOverriddenUserAgent() != null)
&& context.Request.Browser.IsMobileDevice)&&context.GetOverriddenUserAgent().IndexOf ("Chrome", StringComparison.OrdinalIgnoreCase) >= 0)) }); …… ……

 

二、Chrome修改User-Agent