【问题标题】:Calling Script.Require in Shape view returned from IResultFilter not working in Orchard CMS?在从 IResultFilter 返回的形状视图中调用 Script.Require 在 Orchard CMS 中不起作用?
【发布时间】:2014-11-19 14:48:00
【问题描述】:

我目前正在编写自己的模块,该模块需要在所有页面上加载一些脚本,包括前端和仪表板,用户有权编辑内容。我已经编写了 IResultFilter 的实现,它在站点主题的“尾部”区域中添加了一个形状。

形状已正确添加到页面,除了一件事外一切正常。在相同的形状中,我还尝试在我添加到 ResourceManifest 的一些脚本上调用 Script.Require,但它们没有被加载到页面中。

@{
    Script.Require("OrchardTinyMce");
    Script.Require("jQueryColorBox");
}

如果我将相同的代码放置在未使用 IResultsFilter 实现呈现的视图中,那么它们将被添加到页面中。我宁愿将这段代码保留在它的当前视图中,但因为需要相同脚本的两个备用代码更进一步,我真的不想复制它。

有人知道如何让脚本注册吗?提前感谢您的帮助。

【问题讨论】:

    标签: javascript asp.net-mvc razor orchardcms orchardcms-1.8


    【解决方案1】:

    我不确定为什么这在您的视图中不起作用,但您可以使用资源管理器从您的过滤器中添加这些脚本:

    _resourceManager.Require("script", "OrchardTinyMce").AtFoot();
    

    照常注入资源管理器:

    private readonly IResourceManager _resourceManager;
    public MyFilter(IResourceManager resourceManager) {
      _resourceManager = resourceManager;
    }
    

    【讨论】:

    • 我们一定同时回答了这个问题!不过感谢您的回答,这就是我最终要做的。
    • 哈哈是的,看来你真的比我早几秒就进去了!很高兴你一切顺利:)
    【解决方案2】:

    我已经想出了如何做到这一点。我刚刚将 IResourceManager 注入到我的 HtmlFilter 中,然后添加了如下脚本:

    _resourceManager.Require("OrchardTinyMce");
    _resourceManager.Require("jQueryColorBox");
    

    【讨论】:

      【解决方案3】:

      如果您想要其他用户,或者您可以简单地覆盖此脚本(使用 lightBox insted colorBox)。您可以将您的形状添加到内容区(但此形状不应具有输出 html)。

      Services.WorkContext.Layout.Content.Add(YourShape, ":after");
      

      它适用于 IResultsFilter

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多