首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在页面脚本加载之后呈现脚本(EPI 8/ MVC)

在页面脚本加载之后呈现脚本(EPI 8/ MVC)
EN

Stack Overflow用户
提问于 2015-08-26 11:01:17
回答 2查看 1.6K关注 0票数 0

我正在构建一个动态页面类型,我想要根据加载在认证ContentArea中的块加载不同的脚本。

这是一个区域:

代码语言:javascript
复制
[AllowedTypes(new[] { typeof(Types.SomeBlockType)})]
public virtual ContentArea SomeArea { get; set; }

在我的页面视图中,我呈现内容和脚本:(脚本呈现是通过布局)

代码语言:javascript
复制
@Html.PropertyFor(...)
.
.
@section Scripts {

    ...//some scripts loaded
}

我遇到的问题是,SomeArea内容中块中的脚本在部分脚本之前运行。我希望在我的布局脚本和页面脚本加载之后执行块脚本.

感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-26 13:31:31

答案非常简单,但首先您的模板必须满足这些客户端资源需求http://world.episerver.com/documentation/Items/Developers-Guide/EPiServer-CMS/75/Client-resources/Client-resources/。本文提到了如何在页面级别注册脚本,在这种情况下,它将被注入到满足要求的所有模板上,即页面类型名称为XFormPage。

但是,假设您只想在页面上使用特定块时注入一个脚本。一种解决方案是使用本文中的方法,然后遍历页面内容区域中的所有块,并查看是否使用了该块。可能不是最聪明和最快的解决方案。

一个更简单的解决方案是在块的视图或控制器中要求脚本:

代码语言:javascript
复制
var clientResources = ServiceLocator.Current.GetInstance<IRequiredClientResourceList>();

clientResources.RequireScript("/scripts/my-block-script.js", "BlockScript", new[] { "ScriptNameThatShouldExecuteBefore" }).AtFooter();

如果脚本没有任何依赖项,则可以传递Enumerable.Empty()而不是new[] { "ScriptNameThatShouldExecuteBefore“}。

票数 6
EN

Stack Overflow用户

发布于 2015-08-28 15:15:30

最终我做的是用开关箱设置剃须刀块,

它将查看current的Model.SomeArea.Items() (或Content()),我忘记了,并将查找块类型,将其与我想要的块进行比较,并相应地加载脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32224868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档