Конечно, в модуле сделать ResourceManifest.cs
using Orchard.UI.Resources;
public class ResourceManifest : IResourceManifestProvider
{
public void BuildManifests(ResourceManifestBuilder builder)
{
var manifest = builder.Add();
manifest.DefineScript("MyScript")
.SetUrl("myscript.min.js", "myscript.js") // Or just use one
.SetVersion("1.0.0")
.SetDependencies("jQuery");
}
}
Тогда просто включить MyScript
с менеджером ресурсов в вашем FilterProvider
public class MyScriptFilter : FilterProvider, IResultFilter
{
private readonly IResourceManager resourceManager;
public MyScriptFilter(IResourceManager resourceManager)
{
this.resourceManager = resourceManager;
}
public void OnResultExecuting(ResultExecutingContext filterContext)
{
if (!(filterContext.Result is ViewResult) || !UI.Admin.AdminFilter.IsApplied(filterContext.RequestContext))
{
// Control where when it should and shouldn't appear, like exclude admin and any non-ViewResult
return;
}
this.resourceManager.Require("script", "MyScript");
}
public void OnResultExecuted(ResultExecutedContext filterContext)
{
}
}
Не проверял это так не уверен, если он компилирует , но он должен сделать трюк.
В то время как решение будет работать, и, в частности, способ объявить скрипт, который зависит от jQuery, точно прав, в том числе сценарий, как правило, принадлежит в представлении, поэтому я не обязательно буду рекомендовать вторую часть ответа: что, если автор сайта хочет заменить вид другим, который использует другой скрипт в своей теме? –
Вы можете просто включить ресурс в макет: Script.Require («MyScript»); – mberacochea