让Orchard支持多个Layout

简介:

默认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服务吧,就能看到效果了。


本文转自最课程陆敏技博客园博客,原文链接:http://www.cnblogs.com/luminji/p/4347313.html,如需转载请自行联系原作者

相关文章
|
9月前
|
Android开发
Android JetPack组件之DataBinding的使用详解
Android JetPack组件之DataBinding的使用详解
182 0
|
10月前
|
XML 存储 数据可视化
|
12月前
|
XML Java 开发工具
Android5.0新特性-Material Design
Android5.0新特性-Material Design
60 0
|
XML Android开发 数据格式
Android JetPack 之 Navigation
Android JetPack 之 Navigation
Android JetPack 之 Navigation
|
XML 安全 Android开发
Android Jetpack 之ViewBinding和DataBinding
Android Jetpack 之ViewBinding和DataBinding
1492 1
Android Jetpack 之ViewBinding和DataBinding
|
Android开发
Android Material Design设计风格
直接上图: Material Design.gif 代码下载
674 0
|
Android开发 数据格式 XML
Android Design Support Library全解:Part 5 CoordinatorLayout 与其他控件的联动
Android Design Support Library系列第5弹,TabLayout 实现滑动选项卡 1504424076347.png 在前文Part 4 – TabLayout中我们已经使用CoordinatorLayout和其他控件配合过(比如Snackbar出现时,FAB上移),这里来重点介绍其使用方法。
1241 0
|
XML Android开发 数据格式
Android Design Support Library全解:Part 3 NavigationView 抽屉菜单页面
Android Design Support Library系列第三弹,NavigationView 抽屉菜单的实现 左侧弹出菜单 抽屉菜单页面是一中很常见的页面设计,虽然有很多第三方库(SlidingMenu)来帮助我们实现该功能,但是如果自己来实现的话,确实是很麻烦的工作。
1043 0
|
Android开发
Android Design Support Library全解:Part 2 Snackbar
Android Design Support Library系列第2弹: Snackbar “Providing lightweight, quick feedback about an operation is a perfect opportunity to use a snackbar.
835 0
|
Android开发
Android Design Support Library全解:Part 0 Material Design设计风格
Material Desgin 现在扁平化设计十分流行,很多应有都采用了扁平化设计的风格,尤其是在移动端应用开发上,可以已经成为一种先锋式的潮流。
1168 0