让Orchard支持多个Layout

简介: 默认Orchard只有一个Layout,有的时候,我们的站点往往需要多个母版页。那么,如果要让Orchard支持多个Layout,以下是一种解决方案。 一:创建LayoutFilter using System;using System.

默认Orchard只有一个Layout,有的时候,我们的站点往往需要多个母版页。那么,如果要让Orchard支持多个Layout,以下是一种解决方案。

一:创建LayoutFilter

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using Orchard;
using Orchard.Mvc.Filters;

namespace MyTheme.Filters
{
    public class LayoutFilter : FilterProvider, IResultFilter
    {
        private readonly IWorkContextAccessor _wca;

        public LayoutFilter(IWorkContextAccessor wca)
        {
            _wca = wca;
        }

        public void OnResultExecuting(ResultExecutingContext filterContext)
        {
            WorkContext workContext = _wca.GetContext();

            if (HttpContext.Current.Request.Url.PathAndQuery.IndexOf("xxx", StringComparison.OrdinalIgnoreCase) > -1)
            {
                workContext.Layout.Metadata.Alternates.Add("Layout__empty");
            }
        }

        public void OnResultExecuted(ResultExecutedContext filterContext) { }
    }

}

上文实现的代码,就是当我们的URL地址中,还有xxx这3个字符的时候,让我们的页面调用Layout-empty.cshtml这个母版页。

 

二:到模版的View下去创建对应的Layout页面

现在,对应上文代码,到我们自己的模版的View文件夹下去创建Layout-empty.cshtml这个母版页。注意,如果我们没有创建这个母版页,或者Orchard找不到这个母版页,则Orchard还是会去找自己默认的母版页来给我们展现页面。

现在,重启一下IIS服务吧,就能看到效果了。

 

weixin.jpg微信扫一扫,关注最课程,获取每日一练

Creative Commons License本文基于 Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 http://www.cnblogs.com/luminji(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
目录
相关文章
|
Android开发
Android JetPack组件之DataBinding的使用详解
Android JetPack组件之DataBinding的使用详解
223 0
|
XML Android开发 数据格式
AS插件-Android Layout ID Converter
AS插件-Android Layout ID Converter
83 0
|
XML Android开发 数据格式
Android JetPack 之 Navigation
Android JetPack 之 Navigation
Android JetPack 之 Navigation
|
XML 安全 Android开发
Android Jetpack 之ViewBinding和DataBinding
Android Jetpack 之ViewBinding和DataBinding
1524 1
Android Jetpack 之ViewBinding和DataBinding
|
XML Android开发 数据格式
【Xamarin.Android】探索android的底部导航视图
关于标签是否应该放在屏幕顶部或底部的争论已经持续了近十年。Android总是偏爱在页面顶部使用选项卡作为过滤机制,而iOS则使用底部标签作为导航的主要来源。现在,在支持设计库中添加了底部导航视图,Android开发者可以选择他们的应用程序的主要导航来。
1473 0
|
Android开发 数据格式 XML
Android Design Support Library全解:Part 5 CoordinatorLayout 与其他控件的联动
Android Design Support Library系列第5弹,TabLayout 实现滑动选项卡 1504424076347.png 在前文Part 4 – TabLayout中我们已经使用CoordinatorLayout和其他控件配合过(比如Snackbar出现时,FAB上移),这里来重点介绍其使用方法。
1261 0