我正在为Sitefinity创建一个页面小部件,使用Vue显示一些作业。问题是当页面呈现在前端时,将删除Vue用于显示结果的html。所以这是我的jobs.ascx文件中的原始html和vue js代码:
<div class="col-md-4">
<ul class="latestjobs">
<li v-for="job in jobs">{{jobname}}<br /><em>{{companyname}}</em></li>
</ul>
</div>
var app = new Vue({
el: ".latestjobs",
data: {
jobs: [
{ "jobname": "Test", "companyname": "Test" }
]
}
});
这是在页面上呈现的内容:
<div class="col-md-4">
<!---->
</div>
我似乎无法找到关于为什么会发生这种情况的任何参考,因此我们将非常感谢您解决此问题。
答案 0 :(得分:0)
您是否使用MVC小部件/模板(羽毛)进行了测试?可能是rending引擎逃脱了吗?此外,如果删除(注释)vuejs脚本,窗口小部件是否会呈现html?
答案 1 :(得分:0)
解决方案是使用您要允许的标记创建一个新的HtmlSanitizer类。这是我在课堂上使用的内容:
使用Telerik.Sitefinity.Security.Sanitizers;
namespace SitefinityWebApp.Infrastructure.Classes
{
public class SitefinityExtendedHtmlSanitizer : HtmlSanitizer
{
public SitefinityExtendedHtmlSanitizer()
{
base.AllowedTags.Add("iframe");
base.AllowedAttributes.Add("id");
base.AllowedAttributes.Add("v-for");
}
}
}
然后我必须在global.asax中注册它。这是代码:
protected void Application_Start(object sender, EventArgs e)
{
ObjectFactory.Initialized += RegisterCommonTypesEventHandler;
}
private void RegisterCommonTypesEventHandler(object sender, ExecutedEventArgs e)
{
if (e.CommandName == "RegisterCommonTypes")
{
ObjectFactory.Container.RegisterType<IHtmlSanitizer, SitefinityExtendedHtmlSanitizer>(new ContainerControlledLifetimeManager());
}
}
这一切都与Sitefinity 10.2相关。
瓦德