Sitefinity页面小部件在呈现时删除HTML

时间:2018-01-07 13:28:10

标签: sitefinity

我正在为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>

我似乎无法找到关于为什么会发生这种情况的任何参考,因此我们将非常感谢您解决此问题。

2 个答案:

答案 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相关。

瓦德