我一直在使用Web Forms for Marketers (WFFM)在 Sitecore最近的项目,我注意到它注入(inject)了:
<link href="/sitecore%20modules/shell/Web%20Forms%20for%20Marketers/themes/colors//jquery-ui.custom.Default.css" rel="stylesheet" type="text/css" />
有没有办法禁用链接,以便只将我指定的 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;
}
}
}
这意味着我可以检查所有标题控件并隐藏包含
"jquery-ui.custom.Default.css"
的标题控件。 ,但这仍然感觉像是一个肮脏的黑客(确实如此)。它也不会在 page.Header.Controls.Add
的情况下删除链接。会抛出异常。
最佳答案
我已经反编译了 WFFM,它似乎无法配置来更改或关闭它。因此,解决此问题的一种方法是直接编辑此文件并清除其内容。它仍然会被加载,但不会包含任何 CSS。
更新
根据您的更新,您还可以尝试以下操作:
Control ctl = WebUtil.FindControlOfType(Sitecore.Context.Page.Page, typeof(TYPE-OF-EXPECTED-CONTROL));
在哪里更换
TYPE-OF-EXPECTED-CONTROL
.从这里你可以做任何你想做的事情,例如弄清楚它是否包含 CSS 等的链接。
关于sitecore - 如何防止营销人员的 Web 表单注入(inject)自己的 jquery-ui.custom.Default.css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282587/