zoukankan      html  css  js  c++  java
  • 让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服务吧,就能看到效果了。

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

  • 相关阅读:
    微信支付:redirect-uri参数错误 的解决办法
    PHP计划任务之关闭浏览器后仍然继续执行的函数
    windows7安装phpnow Apache非管理员权限不能操作Windows NT服务的解决方法
    php 本周开始时间和结束时间;本月开始时间结束时间;上月开始时间结束时间
    图片预览
    生成随机验证码(记得下载字体文件啊)
    git ,github实际操作指南
    git,github初识命令
    博客园项目(BBS)
    django之分页器
  • 原文地址:https://www.cnblogs.com/luminji/p/4347313.html
Copyright © 2011-2022 走看看