zoukankan      html  css  js  c++  java
  • 基于移动Web的视图引擎实现

    第一步:移动视图引擎实现
    using System.Web.Mvc;
    
        /// <summary>
        /// 移动版View引擎
        /// </summary>
        public class MobileViewEngine : RazorViewEngine
        {
            public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
            {
                ViewEngineResult result = null;
                var request = controllerContext.HttpContext.Request;
    
                if (request.IsSupportedMobileDevice() && ApplicationHelper.HasMobileSpecificViews)
                {
                    var viewPathAndName = ApplicationHelper.MobileViewsDirectoryName + viewName;
                    result = base.FindView(controllerContext, viewPathAndName, masterName, true);
                    if (result == null || result.View == null)
                    {
                        result = base.FindView(controllerContext, viewPathAndName, masterName, false);
                    }
                }
                else
                {
                    result = base.FindView(controllerContext, viewName, masterName, useCache);
                }
                return result;
            }
        }

     第二步:移动视图辅助工具

    using System;
    using System.Configuration;
    using System.Web;
    
    public static class ApplicationHelper
        {
            public static bool HasMobileSpecificViews
            {
                get
                {
                    bool configCheck;
                    bool.TryParse(ConfigurationManager.AppSettings["HasMobileSpecificViews"], out configCheck);
                    return configCheck;
    
                }
            }
            /// <summary>
            /// Used to enable debugging using alternative devices
            /// </summary>
            /// <param name="request"></param>
            /// <returns></returns>
            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")
                        || userAgent.Contains("ipad")
                        || userAgent.Contains("pad")
                        || userAgent.Contains("iphone")
                        || userAgent.Contains("samsung")
                        || userAgent.Contains("pod")
                    );
                return isMobile;
    
            }
    
            public static string MobileViewsDirectoryName
            {
                get
                {
                    string directoryName = ConfigurationManager.AppSettings["MobileViewsDirectoryName"];
                    return !string.IsNullOrEmpty(directoryName) ? String.Format("{0}/", directoryName) : string.Empty;
                }
            }
    
        }

     第三步:移动视图引擎接入以及路由配置

     public class MvcApplication : System.Web.HttpApplication
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                filters.Add(new ExceptionFilter());
                filters.Add(new HandleErrorAttribute());
            }
    
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
    
                //PC-Web
                routes.MapRoute(
                    "Default", // 路由名称
                    "{controller}/{action}/{id}", // 带有参数的 URL
                    new { controller = "Login", action = "Index", id = UrlParameter.Optional } // 参数默认值
                );
    
                ////Mobile-Web
                routes.MapRoute(
                    "MobileDefault", // 路由名称
                    "Mobile/{controller}/{action}/{id}", // 带有参数的 URL
                    new { controller = "MobileHome", action = "Index", id = UrlParameter.Optional } // 参数默认值
                );
            }
    
            protected void Application_Start()
            {
                
                //移动WEB-View引擎
                ViewEngines.Engines.Add(new MobileViewEngine());
                AreaRegistration.RegisterAllAreas();
                GlobalConfiguration.Configure(WebApiConfig.Register);
                RegisterGlobalFilters(GlobalFilters.Filters);
                RegisterRoutes(RouteTable.Routes);     
                            
            }
    
            
            protected void Application_Error(object sender, EventArgs e)
            {
                
            }
        }
  • 相关阅读:
    【BZOJ3144】切糕(HNOI2013)-最小割
    【BZOJ1934】善意的投票(SHOI2007)-最小割
    【BZOJ2125】最短路-圆方树+倍增LCA
    【BZOJ4868】期末考试(六省联考2017)-三分
    【BZOJ1951】古代猪文(SDOI2010)-数论大集合
    【BZOJ2257】瓶子和燃料(JSOI2009)-裴蜀定理+排序
    【BZOJ1485】有趣的数列(HNOI2009)-卡特兰数+线性筛
    【51Nod1952】栈-单调栈+单调队列
    【BZOJ4517】排列计数(SDOI2016)-组合数学:错排
    【BZOJ2111】排列计数(ZJOI2010)-DP+Lucas定理
  • 原文地址:https://www.cnblogs.com/oumi/p/7928119.html
Copyright © 2011-2022 走看看