MVC5根据域名切换View模板_ASP.NET获取当前访问域名
2017-08-31 14:51:17  By: dwtedx

最近有这么一个需求、就是通过不同的域名访问跳转不同的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的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+