基於移動Web的視圖引擎實現

來源:互聯網
上載者:User

標籤:prot   parameter   nec   mapr   text   alt   cep   win   public   

第一步:行動裝置檢視引擎實現
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)        {                    }    }

 

基於移動Web的視圖引擎實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.