如何防止营销人员的Web表单注入自己的jquery-ui.custom.Default.css

zzz*_*Bov 5 sitecore web-forms-for-marketers

我最近在Sitecore项目中使用Web Forms for Marketers(WFFM),我注意到它注入了:

<link href="/sitecore%20modules/shell/Web%20Forms%20for%20Marketers/themes/colors//jquery-ui.custom.Default.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

有没有办法禁用链接,以便只有我指定的CSS文件被添加到页面?


在查看了更多WFFM源之后,我注意到不需要的<link />内容通过Page.Header.Controls以下方式添加到页面中:

if (page.Header != null)
{
    if (!flag)
    {
        try
        {
            //possibly added as link, unless an exception is thrown
            page.Header.Controls.Add((Control) htmlLink);
            linkDictionary.Add(key, key);
            continue;
        }
        catch (Exception ex)
        {
            //added manually
            HtmlTextWriter writer = new HtmlTextWriter((TextWriter) new StringWriter(new StringBuilder()));
            htmlLink.RenderControl(writer);
            page.ClientScript.RegisterClientScriptBlock(typeof (Page), writer.InnerWriter.ToString(), writer.InnerWriter.ToString());
            flag = true;
            continue;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这意味着我可以检查所有标题控件并隐藏包含的标题控件"jquery-ui.custom.Default.css",但这仍然感觉像是一个脏兮兮的黑客(它是).它也不会在page.Header.Controls.Add会抛出异常的情况下删除链接.

zzz*_*Bov 3

事实上,如果文件系统中不存在样式表,则营销人员的 Web 表单将不会添加标签。<link>

根本问题是TDS缓存了已删除样式表的副本,并在每次构建时将其添加到 Web 目录中。清理构建并确保清除缓存的 TDS 文件解决了该问题,而无需添加服务器端代码。