我最近在Web Forms for Marketers (WFFM)项目中使用过Sitecore,我注意到它注入了:
<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
抛出异常的情况下,它也不会删除链接。
答案 0 :(得分:3)
我已经对WFFM进行了反编译,但它似乎无法配置为更改或关闭它。因此,解决此问题的一种方法是直接编辑此文件并清除其内容。它仍将被加载,但不包括任何CSS。
<强>更新强>
根据您的更新,您也可以尝试这样的事情:
Control ctl = WebUtil.FindControlOfType(Sitecore.Context.Page.Page, typeof(TYPE-OF-EXPECTED-CONTROL));
替换TYPE-OF-EXPECTED-CONTROL
的位置。从这里你可以做任何你想做的事,例如弄清楚它是否包含CSS等链接
答案 1 :(得分:3)
如果文件系统中没有样式表,
营销人员的Web表单实际上将不添加<link>
标记。
根本问题是TDS缓存了已移除样式表的副本,并在每次构建时将其添加到Web目录中。清理构建并确保清除缓存的TDS文件解决了问题,而无需添加服务器端代码。