从IResultFilter返回的Shape视图中调用Script.Require不在Orchard CMS中工作?

时间:2014-11-19 14:48:01

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

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

正确地将形状添加到页面中,除了一件事以外,一切都正常。在相同的形状我也试图调用Script.Require我添加到ResourceManifest的几个脚本,但它们没有被加载到页面。

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

如果我将相同的代码放在未使用我的IResultsFilter实现呈现的视图中,则将它们添加到页面中。我宁愿在它的当前视图中保留这些代码,尽管有两个替代方案需要相同的脚本,而且我真的不想复制它。

有没有人有任何想法如何让脚本注册?在此先感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

我已经研究过如何做到这一点。我刚刚将IResourceManager注入到我的HtmlFilter中,然后按如下方式添加脚本:

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

答案 1 :(得分:2)

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

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

按照惯例注入资源管理器:

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

答案 2 :(得分:0)

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

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

它适用于IResultsFilter