MVC5根据域名切换View模板_ASP.NET获取当前访问域名
2017-08-31 14:51:17 By: shinyuu
最近有这么一个需求、就是通过不同的域名访问跳转不同的View、其实实现起来并不难、不过一般在项目上线的时候经常会有类似的需求、下面就跟大家分享一下解决方案
重写模板查找方式
public class MyRazorViewEngine : RazorViewEngine { public MyRazorViewEngine() : base() { } private const string DefaultView = "~/Views/"; private const string MoblieDomain = "m."; private const string WwwFolder = "~/Views/www/"; private const string MoblieFolder = "~/Views/mobile/"; public static string GetView(HttpRequestBase request) { if (request.Url == null) return DefaultView; var url = request.Url.Host; return url.Contains(MoblieDomain) ? MoblieFolder : WwwFolder; } string GetView(ControllerContext controllerContext) { return GetView(controllerContext.HttpContext.Request); } protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath) { var views = GetView(controllerContext); return base.CreatePartialView(controllerContext, partialPath.Replace(DefaultView,views)); } protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath) { var views = GetView(controllerContext); return base.CreateView(controllerContext, viewPath.Replace(DefaultView, views), masterPath.Replace(DefaultView, views)); } protected override bool FileExists(ControllerContext controllerContext, string virtualPath) { var views = GetView(controllerContext); return base.FileExists(controllerContext, virtualPath.Replace(DefaultView, views)); } }
Application_Start()注册
ViewEngines.Engines.Add(new MyRazorViewEngine()); _ViewStart.cshtml @{ Layout = "~/Views/Shared/_Layout.cshtml".Replace("~/Views/", MyRazorViewEngine.GetView(Request)); }
若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力
想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)
或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)
如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教
为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)
感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛