清除SharePoint 2010中匿名用户的html输出

时间:2012-02-01 09:19:41

标签: html sharepoint optimization sharepoint-2010

我使用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并不是很吸引人。

谢谢!

1 个答案:

答案 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);
        }
    }
}