完整网站模板,山东家居行业网站开发,wordpress 知乎模板,怎么给网站做外链asp.net mvc 重新引导视图路径#xff0c;改变视图路径 使用指定的控制器上下文和母版视图名称来查找指定的视图 通过本文学习#xff0c;你可以根据该技法#xff0c;去实现#xff0c;站点自定义皮肤#xff0c;手机站和电脑站#xff0c;其他设备站点#xff0c;在不… asp.net mvc 重新引导视图路径改变视图路径 使用指定的控制器上下文和母版视图名称来查找指定的视图 通过本文学习你可以根据该技法去实现站点自定义皮肤手机站和电脑站其他设备站点在不同的环境下调取不同的视图模板。 源码下载地址https://download.csdn.net/download/cplvfx/89010387 第一步新建视图文件夹
在站点根目录新建【Views2】视图文件夹
新建【Home】文件夹
新建视图文件【Index.cshtml】和【_top.cshtml】
在【Views2】文件夹下新建【Web.config】文件
Index.cshtml 文件内容
{Layout null;
}!DOCTYPE htmlhtml
headmeta nameviewport contentwidthdevice-width /titleViews2下的Index/title
/head
bodydivh1Views2下的Index/h1Html.Partial(_top)/div
/body
/html_top.cshtml 文件内容 h1Views2下的_top.cshtml/h1
Web.config 文件内容 我这里是直接项目默认的Views文件夹下的Web.config文件 如下图 ?xml version1.0?configurationconfigSectionssectionGroup namesystem.web.webPages.razor typeSystem.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version3.0.0.0, Cultureneutral, PublicKeyToken31BF3856AD364E35section namehost typeSystem.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version3.0.0.0, Cultureneutral, PublicKeyToken31BF3856AD364E35 requirePermissionfalse /section namepages typeSystem.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version3.0.0.0, Cultureneutral, PublicKeyToken31BF3856AD364E35 requirePermissionfalse //sectionGroup/configSectionssystem.web.webPages.razorhost factoryTypeSystem.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version5.2.4.0, Cultureneutral, PublicKeyToken31BF3856AD364E35 /pages pageBaseTypeSystem.Web.Mvc.WebViewPagenamespacesadd namespaceSystem.Web.Mvc /add namespaceSystem.Web.Mvc.Ajax /add namespaceSystem.Web.Mvc.Html /add namespaceSystem.Web.Optimization/add namespaceSystem.Web.Routing /add namespaceWebViewTest //namespaces/pages/system.web.webPages.razorappSettingsadd keywebpages:Enabled valuefalse //appSettingssystem.webServerhandlersremove nameBlockViewHandler/add nameBlockViewHandler path* verb* preConditionintegratedMode typeSystem.Web.HttpNotFoundHandler //handlers/system.webServersystem.webcompilationassembliesadd assemblySystem.Web.Mvc, Version5.2.4.0, Cultureneutral, PublicKeyToken31BF3856AD364E35 //assemblies/compilation/system.web
/configuration新建好后的目录文件如下 第二步新建视图引擎
在跟目录下新建【ViewsTools】文件夹
在该文件夹下面新建【ThemeRazorViewEngine】类文件
在该文件夹下面新建【ThemeVirtualPathProviderViewEngine】类文件
如图 ThemeRazorViewEngine.cs文件内容
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace WebViewTest.ViewsTools
{public class ThemeRazorViewEngine: ThemeVirtualPathProviderViewEngine{/// summary/// 创建Razor视图/// /summaryprotected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath){return new RazorView(controllerContext, viewPath, masterPath, true, FileExtensions);}/// summary/// 创建Razor分部视图/// /summaryprotected override IView CreatePartialView(ControllerContext controllerContext, string partialPath){return new RazorView(controllerContext, partialPath, null, false, FileExtensions);}}
}
ThemeVirtualPathProviderViewEngine.cs文件内容
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace WebViewTest.ViewsTools
{/// summary/// 主题视图引擎/// /summarypublic abstract class ThemeVirtualPathProviderViewEngine : VirtualPathProviderViewEngine{/// summary/// 使用指定的控制器上下文和母版视图名称来查找指定的视图/// /summary/// param namecontrollerContext控制器上下文/param/// param nameviewName视图的名称/param/// param namemasterName母版视图的名称/param/// param nameuseCache若为 true则使用缓存的视图/param/// returns页视图/returnspublic override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache){//构建一个视图引擎结果ViewEngineResult result new ViewEngineResult(CreateView(controllerContext, $~/Views2/Home/{viewName}.cshtml, string.Empty), this); return result;}/// summary/// 寻找分部视图的方法/// /summary/// param namecontrollerContext控制器上下文/param/// param namepartialViewName分部视图的名称/param/// param nameuseCache若为 true则使用缓存的分部视图/param/// returns分部视图/returnspublic override ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache){//构建一个分部视图引擎结果ViewEngineResult result new ViewEngineResult(CreatePartialView(controllerContext, $~/Views2/Home/{partialViewName}.cshtml), this);return result;}}
} 第三步修改Global.asax
增加下面代码
//将默认视图引擎替换为ThemeRazorViewEngine引擎
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new ThemeRazorViewEngine());
修改后的完整代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System.Web.Security;
using System.Web.SessionState;
using WebViewTest.ViewsTools;namespace WebViewTest
{public class MvcApplication : System.Web.HttpApplication{protected void Application_Start(){//将默认视图引擎替换为ThemeRazorViewEngine引擎ViewEngines.Engines.Clear();ViewEngines.Engines.Add(new ThemeRazorViewEngine());AreaRegistration.RegisterAllAreas();GlobalConfiguration.Configure(WebApiConfig.Register);FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);BundleConfig.RegisterBundles(BundleTable.Bundles);}}
}第四步运行预览
修改前的首页 修改后的首页