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

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

  • 相关阅读:
    ionic文档
    Can't resolve all parameters for Storage: (?).
    cannot find module @ionicapp-scriptsinionic-app-scripts.js
    ionic 环境搭建
    学习文档记录
    js 文件引用传递参数
    No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
    js 去除左右空格
    sql 多行数据合并
    filter @Autowired nullPointer
  • 原文地址:https://www.cnblogs.com/luminji/p/4347313.html
Copyright © 2011-2022 走看看