在Sharepoint 2007中修改Application.Master

时间:2009-09-08 18:21:16

标签: silverlight sharepoint

我需要在Sharepoint网站上的/ _layouts /页面上部署Silverlight导航。据我所知,这需要编辑网站的Application.master。但是,当我编辑它并部署(重置IIS后)时,我收到以下错误:

类型'System.Web.UI.WebControls.ContentPlaceHolder'没有名为'__Error'的公共属性。 at System.Web.UI.ControlBuilder.AddProperty(String filter,String name,String value,Boolean mainDirectiveMode)    在System.Web.UI.ControlBuilder.PreprocessAttributes(ParsedAttributeCollection attribs)    在System.Web.UI.ControlBuilder.Init(TemplateParser解析器,ControlBuilder parentBuilder,Type类型,String tagName,String id,IDictionary属性)    在System.Web.UI.WebControls.ContentPlaceHolderBuilder.Init(TemplateParser解析器,ControlBuilder parentBuilder,Type类型,String tagName,String ID,IDictionary属性)    在System.Web.UI.ControlBuilder.CreateBuilderFromType(TemplateParser解析器,ControlBuilder parentBuilder,Type类型,String tagName,String id,IDictionary attribs,Int32 line,String sourceFileName)    在System.Web.UI.ControlBuilder.CreateChildBuilder(String filter,String tagName,IDictionary attribs,TemplateParser parser,ControlBuilder parentBuilder,String id,Int32 line,VirtualPath virtualPath,Type& childType,Boolean defaultProperty)    在System.Web.UI.TemplateParser.ProcessBeginTag(匹配匹配,String inputText)    在System.Web.UI.TemplateParser.ParseStringInternal(String text,Encoding fileEncoding)

有没有人对此错误有任何见解?

3 个答案:

答案 0 :(得分:0)

检查html是否有任何未关闭的标签。你得到的错误通常都是这样的。

答案 1 :(得分:0)

建议不要修改application.master(或“12 hive”中的任何文件),因为它会使您的安装不受支持。这也意味着更改会影响SharePoint使用的每个Web应用程序(如果您只有一个,则可能没问题)。还有其他选项,所有这些选项都在this SharePoint Magazine article中进行了描述。

替代方法

您根本无法修改application.master文件。它包含此委托控制标记:

<SharePoint:DelegateControl runat="server"
    ControlId="AdditionalPageHead"
    AllowMultipleControls="true"/>

因此,可以使用委托控制功能以编程方式禁用或隐藏SharePoint的默认导航,并将其替换为您自己的导航。 elements.xml看起来像:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <Control
        ControlClass="YourAssembly.YourClass"
        ControlAssembly="YourAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx"
        Id="AdditionalPageHead"
        Sequence="1" />
</Elements>

此选项可以灵活地仅在必要的位置激活该功能,并使您的application.master保持完整,而无需低级HTTP模块。

答案 2 :(得分:0)

首先不要修改现成的文件,Update或SP可能会覆盖它。使用Alex的委托方法或必要时查看http处理程序方法。当MS指出缺少对修改应用程序主机的支持时,可以通过创建一个新的_layouts虚拟目录来纠正一篇知识库文章,但如果你不能使用委托,最好使用http处理程序

您似乎使用SharePoint Designer编辑了母版页。这通常会在您将文件保存到磁盘时中断文件,但我听说更新版本不再执行此操作(我的开发框中未安装SPD超过一年)。如果您在记事本中打开文件,您将看到许多__XXXX属性,这些属性将导致页面中断。您可以在SPD中修改该文件,然后在文本上选择全部,然后剪切并将其翻到记事本/ Visual Studio中打开的新文件中。虽然我建议使用Visual Studio进行所有修改。

听到它的声音,您需要使用HTTP处理程序/ HTTP模块方法,因为您想要修改页面的标记,尽管您可以在委托中使用JavaScript做一些聪明的事情。

请注意,如果更改layouts文件夹中的Application.Master页面,则SharePoint安装将处于不受支持的状态。