我使用SharePoint 2010构建面向互联网的大型网站,现在我正在为匿名用户优化网站。 当我查看我的起始页面的html源代码时,我发现SharePoint的各种ootb组件正在向页面添加许多不必要的东西。 (至少它们对匿名用户来说是不必要的,因为我们使用的是完全自定义的品牌。)
一些例子:
在头上:
<style type="text/css">
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_TopWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; }
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_LeftWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; }
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_RightWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; }
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_ctl01_SocialWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; }
.ctl00_wpz_0 { border-color:Black;border-width:1px;border-style:Solid; }
身体顶部:
<script type="text/javascript">
//<![CDATA[
var MSOWebPartPageFormName = 'aspnetForm';
var g_presenceEnabled = true;
var g_wsaEnabled = false;
var g_wsaLCID = 1033;
var g_wsaSiteTemplateId = 'XXX#1';
var g_wsaListTemplateId = 850;
var _fV4UI=true;var _spPageContextInfo = {webServerRelativeUrl: "\u002fen-gb", webLanguage: 1033, currentLanguage: 1033, webUIVersion:4,pageListId:"{28b31ecf-221c-4a5f-94e2-6b97af0cfd61}",pageItemId:1, alertsEnabled:true, siteServerRelativeUrl: "\u002f", allowSilverlightPrompt:'True'};//]]>
</script>
<script type="text/javascript">
<!--
var L_Menu_BaseUrl="/en-gb";
var L_Menu_LCID="1033";
var L_Menu_SiteTheme="";
//-->
</script>
<script type="text/javascript">
//<![CDATA[
document.onreadystatechange=fnRemoveAllStatus; function fnRemoveAllStatus() {removeAllStatus(true)};var _spWebPartComponents = new Object();//]]>
</script>
页面底部附近还有很多其他内容,例如javascript函数等。
有人试图删除所有这些东西吗?
我正在寻找尽可能干净的方式,解析http模块过滤器中的html并不是很吸引人。
谢谢!
答案 0 :(得分:2)
我建议尽可能消除混乱,为匿名用户使用专用母版页(并删除您不需要的所有用户/服务器控件)。您可以使用实现基类的页面布局,在初始阶段,您可以分配自己的匿名母版页。
另一种解决方案是将负责杂乱/未处理的html的Web控件/组件包装在经过身份验证的控件模板中。
/// <summary>
/// Base Abstract control for conditionally (permissions, querystring, audience, anonymous, etc.) visible content
/// </summary>
[ParseChildren(true)]
public abstract class ConditionallyVisibleControl : Control
{
public ITemplate ContentTemplate { get; set; }
public abstract bool ShouldBeVisible { get; }
protected override void CreateChildControls()
{
base.CreateChildControls();
if (ShouldBeVisible && ContentTemplate != null)
{
Control container = new Control();
ContentTemplate.InstantiateIn(container);
Controls.Add(container);
}
}
}
他们有类似
的东西/// <summary>
/// Hide some content to anonymous user
/// </summary>
/// <example>
/// <UC:AnonymousTrimmedControl runat="server">
/// <ContentTemplate>
/// <!-- Any content over there that will not be rendered / visible for anonymous users -->
/// </ContentTemplate>
/// </UC:AnonymousTrimmedControl>
/// </example>
public class AnonymousTrimmedControl : ConditionallyVisibleControl
{
public override bool ShouldBeVisible
{
get
{
return (HttpContext.Current.Request.IsAuthenticated);
}
}
}